冒泡排序法是如何排序的???
收起
知与谁同
2018-07-15 19:51:50
1299
0
4
条回答
写回答
取消
提交回答
-
冒泡就是大的数,比较之后放到最前面,一次类推
2019-07-17 22:49:46
-
用两层循环,比较两个数大小,按要求,大数或者小数在前排序,注意二层循环中,J=i
2019-07-17 22:49:46
-
比如有一组数为12,23,1,4,2,6。需要使用冒泡排序方法使这组数从小到大排列。首先12和23比较,12<23,则位置不变;接着23和1比较,因为23>1,所以交换23和1的位置,这组数这时是12 1 23 4 2 6;然后比较23和4,因为23>4,所以交换23和4,这组数变为12 1 4 23 2 6;然后比较23和2,23>2,再交换,变为12 1 4 2 23 6;然后比较23和6,23>6,再交换,最后为12 1 4 2 6 23。这就叫经过了一趟排序,即相邻两数比较,大的放在后面,经过一趟排序后,最大的数就冒泡到最后面了。然后再对前n-1个数进行第二趟排序,排序后第二大的数就放在了第n-1个位置;最后经过n-1趟排序后整个数组就有序了。
2019-07-17 22:49:46
-
其实很简单,就是一个一个进行对比如果a<b/a>b就把两个变量进行交换,使得最大/最小的排在前面。
2 4 3 5 1 五个数
2<4 交换成为 42351
2<3 成为 43251
2<5 成为 43521
2>1 不交换 43521
然后最小的1就一定会在最后
然后比较前4个数,4>3,3<5(交换),3>2;
成为45321,
前3个数4<5(交换),4>3
就成为了54321
这是一个巧合的例子,程序应该还要比较前两个数
5>4
最后成为54321。
以下是样例程序。
#include<stdio.h>
int main()
{
int a[5]={2,4,3,5,1};
int i,j,t; //i,j是计数器,t用作交换
for(i=0;i<5;i++)
{
for(j=0;j<5-i-1;j++)
{
if(a[j]<a[j+1]) //如果后面的数字大于前面的数字
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t; //就把两个数交换
}
}
}
printf("%d %d %d %d %d\n",a[0],a[1],a[2],a[3],a[4]);
return 0; //程序正常结束
}
你懂了么。
2019-07-17 22:49:46