当前位置:首页 » 编程语言 » c语言函数冒泡法

c语言函数冒泡法

发布时间: 2022-12-25 17:00:31

c语言 冒泡法是什么啊

冒泡法是排序的一种方法,冒泡法和冒泡排序实是一个定义.之所以叫冒泡法,即是像在水中的气泡一样,在一轮两数比较之后将最小(或最大的数字)排在一列数的左边(当然右边也行,总之是一边).然后排开这个数,经过N-2排开之后,整列数的大小就是按顺序来的.

Ⅱ C语言冒泡法

#include<iostream>
usingnamespacestd;
voidSort(inta[],intn);
intmain()
{
inti,n,a[1001];
cin>>n;
for(i=1;i<=n;i++)
cin>>a[i];
Sort(a,n);
for(i=1;i<=n;i++)
cout<<a[i]<<"";
system("pause");
return0;
}
voidSort(inta[],intn)
{
inti,j,x,flag;
for(i=1;i<=n;i++)
{
flag=0;
for(j=1;j<=n-i;j++)
if(a[j+1]<a[j])
{
flag=1;
x=a[j];
a[j]=a[j+1];
a[j+1]=x;
}
if(flag==0)
break;
}
}

【注意】上面那个数组下标是从1开始的,本人习惯从1开始

还有一种超好的排序方法,我一直用它:

#include<iostream>
#include<algorithm>
usingnamespacestd;
intmain()
{
intn,i,a[10001];
cin>>n;
for(i=1;i<=n;i++)
cin>>a[i];
sort(a+1,a+n+1);//默认是升序
for(i=1;i<=n;i++)
cout<<a[i]<<"";
system("pause");
return0;
}

Ⅲ c语言冒泡法

printf("the scored numbers:\n")后面少个分号
你代码的第7行应该改为 for(i=0;i<10;i++)

#include "stdio.h"
int main()
{
int a[10],i,j,t;
printf("input ten numbers:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("\n");
for(i=1;i<10;i++)
{
for(j=10;j>i;j--)
if(a[j-1]>a[j])
{
t=a[j-1];
a[j-1]=a[j];
a[j]=t;
}
}
printf("the scored numbers:\n");
for(i=0;i<10;i++)
printf("%d ",a[i]);
}

Ⅳ 关于C语言冒泡算法的详解

冒泡法又称起泡法,属于交换排序.假设待排序数组a的长度是n,排序过程如下:
1)令i=0
2)另j=n-1(从最后一个元素开始)
3)比较a[j-1]与a[j],若a[j-1]>a[j],则把它们交换
4)若j>i,则令j--,转到3),否则转到5)
5)若i<n-1,则令i++,转到2),否则转到6)
6)完成排序

Ⅳ c语言冒泡法

实参是形参的拷贝
实参的值改变不影响形参

#include <stdio.h>
void exch(int *a,int *b)
{
int temp;
temp =*a;
*a=*b;
*b=temp;
}

void comexch(int *m,int *n)
{
if(*m>*n)
exch(m,n);
}

void main()
{
int i,a[10];
printf("please input 10 numbers:");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
printf("%d\n",a[i]);
int j,k,temp;
for(j=0;j<10;j++)
{
for(k=10;k>j;k--)
comexch(&a[k-1],&a[j]);
}
printf("\n结果为:\n");
for(k=0;k<10;k++)
printf("%d\n",a[k]);

}

Ⅵ C语言的冒泡法

修改好了!!如下:

#include<stdio.h>

void bubble(int a[100], int n)
{
int i=0;
int j=0;
int temp=0;
char select; //选择

printf("Please Select size b/l: \n"); //选择从大到小或者从小到大
scanf("%s",&select); //运行中就是这里有错误,select没有给我一个输入就自己跳过去了,很奇怪
//修改好了,%c改为%s

switch (select)
{
case 'l': //从小到大
for (j=1; j<n; ++j)
{

for (i=0; i<n-j; ++i)
{

if (a[i] > a[i+1])
{

temp = a[i];
a[i] = a[i+1];
a[i+1] = temp;
}
}

}break;

case 'b': //从大到小
for (j=1; j<n; ++j)
{

for (i=0; i<n-j; ++i)
{

if (a[i] < a[i+1])
{

temp = a[i];
a[i] = a[i+1];
a[i+1] = temp;
}
}

}break;

default: printf("error\n");
}

for (i=0; i<n; ++i) //输出排列好的数组
{

printf(" %d ", a[i]);
}

printf("\n");

}

void main()
{ int n=0;
int i=0;
int a[100]={0};

printf(" Please enter the number of array :\n");
scanf("%d", &n); //输入数组元素的个数

printf(" Please enter the array :\n");

for (i=0; i<n; ++i) //输入数组里面的各元素
{
scanf("%d", &a[i]);
}

bubble(a, n);

}

Ⅶ C语言冒泡排序法是什么

冒泡排序法,是C语言常用的排序算法之一,意思是对一组数字进行从大到小或者从小到大排序的一种算法。

具体方法是:

相邻数值两两交换。从第一个数值开始,如果相邻两个数的排列顺序与我们的期望不同,则将两个数的位置进行交换(对调);如果其与我们的期望一致,则不用交换。重复这样的过程,一直到最后没有数值需要交换,则排序完成。

C语言常见的排序算法:

1、冒泡排序

基本思想:比较相邻的两个数,如果前者比后者大,则进行交换。每一轮排序结束,选出一个未排序中最大的数放到数组后面。

2、快速排序

基本思想:选取一个基准元素,通常为数组最后一个元素(或者第一个元素)。从前向后遍历数组,当遇到小于基准元素的元素时,把它和左边第一个大于基准元素的元素进行交换。在利用分治策略从已经分好的两组中分别进行以上步骤,直到排序完成。

3、直接插入排序

基本思想:和交换排序不同的是它不用进行交换操作,而是用一个临时变量存储当前值。当前面的元素比后面大时,先把后面的元素存入临时变量,前面元素的值放到后面元素位置,再到最后把其值插入到合适的数组位置。

4、直接选择排序

基本思想:依次选出数组最小的数放到数组的前面。首先从数组的第二个元素开始往后遍历,找出最小的数放到第一个位置。再从剩下数组中找出最小的数放到第二个位置。以此类推,直到数组有序。

以上内容参考 网络-排序算法、网络-c语言冒泡排序


Ⅷ c语言 冒泡法

for(j=0;j<=9;j++)
for (i=0;i<10-j;i++)
你可以这样来分析,
第一次循环 j=0;
for(j=0; j<=9; j++)
for(i=0; i<10;i++)
//这一次把最大的数移到了a[9],即最后面
第二次循环,j=1;
for(j=1; j<=9; j++)
for(i=0; i<9;i++)
//这一次把第2大的数移到了a[8]
第三次循环,j=2;
for(j=2; j<=9; j++)
for(i=0; i<8;i++)
//这一次把第3大的数移到了a[7].
这样依次类推,最后一次循环
for(j=9; j<=9; j++)
for(i=0; i<1;i++)
这样a[0]就是最小的数了。

Ⅸ c语言中冒泡法是什么意思

冒泡法是一种排序方法
冒泡法5
4
3
2
1
比如上面这5个数字我们把它按照由小到大的顺序排列,
从前往后相临两位比较大小,如果前一位比后一位大就把它俩
换位,5比4大就把5和4换位,得到45321
5又比3大
5和3换位
得到43521
依次类推最后得到
43215
这样就把最大的一个数字移到最后面了
然后不看5
,剩下4321
再用上面的方法把4移动到最后
得到
32145
在不看45
剩下321
把3移动到
最后,依此类推。
最终得到12345
这就是冒泡法,是计算机编程排序中最简单快捷的方法。
除此意外我还能写出许多排序方法,但是效率上都不如冒泡法
至于为什么叫冒泡法呢,你把这几个数字竖起来看
1
2
3
4
5
把最大的数字5看成最大的泡泡,浮到最上,然后4又浮上去,依此类推
得到
5
4
3
2
1
所以形象的称为冒泡法
——————————————————————————————————
以下是C语言中十个数的冒泡法排序的代码
#include<stdio.h>
#include<conio.h>
int
main(void)
{
long
arrary[9],
box=0L;
int
i1=0,
i2=0;
for(i1=0;i1<9;i1++)
arrary[i1]=0;
printf("输入数组元素:\n");
for(i1=0;i1<=9;i1++)
{
printf("%3d>",i1+1);
scanf("%d",&arrary[i1]);
}
for(i1=0;i1<=9;i1++)
for(i2=0;i2<=9-i1;i2++)
{
if(arrary[i2]<arrary[i2+1])
{
box=arrary[i2+1];
arrary[i2+1]=arrary[i2];
arrary[i2]=box;
}
}
printf("\n排序后为:\n");
for(i1=0;i1<=9;i1++)
printf("%3d>%d\n",i1+1,arrary[i1]);
getch();
return
0;
}

Ⅹ c语言中的冒泡法是怎样的

其实就如其名
如下数据
5 3 2 4 1
从5开始与相邻的数字交换,大的摆右小的摆左
则第一的结果为
3 5 2 4 1
然后继续执行,直到与最后一个数据交换完毕,结束一次循环
于是的得到
3 2 4 1 5
很显然,最后一个数据时最大的,
冒泡就是这个意思,每次循环找出最大的,然后找到除这个数之外最大的,直至数组排序完毕。
其实你也可以,用一个max函数返回数组的最大值的位置,把它与最后一个数字交换

5 4 2 3 1->1 4 2 3 5
然后除掉最后一个数字,找最大值与倒数第2个数字交换。
1 4 2 3 5->1 3 2 4 5
。。以此类推

热点内容
魔兽世界自动钓鱼脚本 发布:2024-05-19 06:43:07 浏览:494
cbs加密 发布:2024-05-19 06:29:56 浏览:200
ssis存储过程 发布:2024-05-19 06:21:31 浏览:630
怎样删除小视频文件夹 发布:2024-05-19 05:49:29 浏览:589
开启php短标签 发布:2024-05-19 05:44:12 浏览:473
android各国语言 发布:2024-05-19 05:42:54 浏览:247
微信什么资料都没怎么找回密码 发布:2024-05-19 05:35:34 浏览:907
填志愿密码是什么 发布:2024-05-19 05:30:23 浏览:318
城堡争霸自动掠夺脚本 发布:2024-05-19 05:22:06 浏览:204
asp编程工具 发布:2024-05-19 05:20:36 浏览:143