什么叫冒泡排序

c语言

举个例子:
比如说有一组数组:1,6,3,9,7,4
想要给它做排序,把这个数组从小到大的排列
这里就可以使用冒泡算法(就像河里的泡向上冒,小的泡会在大的泡的上面一样)

这里冒泡排序就是小的数字一个一个往前移,直到前面没有比它大的数了,就停下来,每个数都同理。

程序举例(仍旧是上面的例子,但是我用的不是c语言,但你应该看得懂)

int[] array=new int[6]{1,6,3,9,7,4};
for(int m=0;m<6;m++)
{
for(int n=5;n>0;n--)
{
if(array[n]<array[n-1])
{
int temp=array[n];
array[n]=array[n-1];
array[n-1]=temp;
}
}。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-02
举个例子:
比如说有一组数组:1,6,3,9,7,4
想要给它做排序,把这个数组从小到大的排列
这里就可以使用冒泡算法(就像河里的泡向上冒,小的泡会在大的泡的上面一样)

这里冒泡排序就是小的数字一个一个往前移,直到前面没有比它大的数了,就停下来,每个数都同理。

程序举例(仍旧是上面的例子,但是我用的不是c语言,但你应该看得懂)

int[] array=new int[6]{1,6,3,9,7,4};
for(int m=0;m<6;m++)
{
for(int n=5;n>0;n--)
{
if(array[n]<array[n-1])
{
int temp=array[n];
array[n]=array[n-1];
array[n-1]=temp;
}
}
}

希望对你有所帮助本回答被提问者采纳
第2个回答  2010-04-17
比如从小到大排列

就是数组中,从a[0]开始,a[i]和a[i+1]比较,小的放前,大的放后,直到最后一项,一轮之后最大的数就到最后面了.
第二轮同样,比到倒数第二项即可(当然比到最后一项也不会错),这样次大项到了倒数第二项.
这样N-1轮之后,就排列好了.

个人觉得还不叫"沉底法",呵呵,当然倒过来看就是"冒泡法"了
第3个回答  2010-04-17
就是每进行一轮循环(内循环一次),把最大或最小的值放到最后一个位置即冒出。如 3 2 1 6 5 一轮后:2 1 3 5 6
第4个回答  2019-07-27
冒泡排序★★★★★★
#include<stdio.h>
#define
N
5
void
main()
{
int
i,j;
int
grade[N],temp;
printf("输入5个数\n");
for(i=0;i<N;i++)
{
scanf("%d",&grade[i]);
}
for(i=0;i<N;i++)
{
for(j=0;j<N-1-i;j++)
{
if(grade[j]<grade[j+1])
{
temp=grade[j+1];
grade[j+1]=grade[j];
grade[j]=temp;
}
}
}
printf("最后排序为:\n");
for(i=0;i<N;i++)
{
printf("%d",grade[i]);
}
printf("\n");
}
#include<stdio.h>
//链接标准头文件
#define
N
5
//定义常量N并赋值为5
void
main()
//主函数入口
{
//表示主函数开始
int
i,j;
//定义整形变量i和j
int
grade[N],temp;
//定义N维(N=5,也就是五维啦^^)整形数组和整形变量temp
printf("输入5个数\n");
//在屏幕上显式“输入5个数”并且换行
for(i=0;i<N;i++)
//开始for循环,从i=0,每次加1,直到i=4,共需循环5次
{
//循环体开始
scanf("%d",&grade[i]);
//依次获取用户输入的整数值并存入数组grade中
}
//循环结束
for(i=0;i<N;i++)
//开始外层for循环,从i=0,每次加1,直到i=4
{
//外层循环体开始
for(j=0;j<N-1-i;j++)
//开始外层for循环,从j=0,每次加1直到i等于外层循环的N-j-1
{
//内层循环体开始
if(grade[j]<grade[j+1])
//条件判断
{
//如果整形数组前面的数比其后的小,执行以下语句
temp=grade[j+1];
//将比较大的数赋值给temp
grade[j+1]=grade[j];
//将比较小的数赋值给数组中后面的变量
grade[j]=temp;
//将比较大的数赋值给数组中前面的变量
}
//从此便完成大小变量的交换,使得大值往前放
}
//结束内层循环
}
//结外内层循环,完成排序
printf("最后排序为:\n");//在屏幕显式“最后排序为:”并换行
for(i=0;i<N;i++)
//同开始的for循环类似
{
//开始循环输出
printf("%d",grade[i]);
//只是这里要逐个输出数组中的五个数值
}
//结束循环输出
printf("\n");
//输出换行到屏幕,看不到什么效果,可删掉
}
//结束main()函数