冒泡排序一趟扫描的结果(冒泡排序总结)

http://www.itjxue.com  2023-01-29 13:32  来源:未知  点击次数: 

什么叫冒泡排序法进行第一遍扫描后的中间结果?~是冒泡排序法进行第一次扫描后的结果吗?

我给你举个例吧,例如有一列数12 15 14 12 13 2 5 4 8

冒泡第一次是: 2 12 15 14 12 13 4 5 8

其中步骤是(1)8与4比,84所以8的位置确定了;(2)45,所以4要在5前面,5的位置也确定了;(3)42,4的位置确定了;(4)213,13应在2后面,13的位置确定了...如些类推.

其实就是从最后(或最前)一个开始与相轮的数两两相比,小的在前,大的在后直到最后,第一步是这样的,第二步也一样从最后一个开始,N步后那个有序的序列就出来了

是的,第一遍扫描的"中间结果"就是第一遍扫描的"结果"

.输入n个关键码(n≤80),使用冒泡排序法,对这n个关键码排序,输出每一趟的排序结果

冒泡排序是没扫描一次数据就得出一个最大的或最小的数。

for(i=0;in;i++)

{

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

交换a[i]和a[i+1];

}

输出a[]数组,这是一趟的结果。再循环n次就得到n趟了!

这是思路,要代码吗?

c语言实现:使用冒泡排序,从小到大排列,输出每一趟排序后的结果以及总的比较次数,

#includestdio.h

int?main()

{

????int?num=6,tep,sum=0;

????int?a[6]=?{2,1,10,8,7,6};

????int?i,j;

????printf("原数组:");

????for(int?p=0;?pnum;?p++)

????????printf("%d?",a[p]);

????puts("");

????for(i=0;?inum-1;?i++)

????{

????????for(j=0;?jnum-i;?j++)

????????{

????????????if(a[j]a[j+1])

????????????{

????????????????tep=a[j];

????????????????a[j]=a[j+1];

????????????????a[j+1]=tep;

????????????}

????????????sum++;

????????}

????????printf("第%d趟排序后:",i+1);

????????for(int?p=0;?pnum;?p++)

????????????printf("%d?",a[p]);

????????printf("此时总比较次数:%d\n",sum);

????}

????return?0;

}

如何用C语言进行冒泡排序,并把每一次排序的结果输出?

#includestdio.h

int?main()

{?int?a[10],?i,?j,?t,?i1;//定义数组;

??for?(i?=?0;?i10;?i++)

??{?printf("请输入第%d次元素:",i+1);

????scanf("%d",?a[i]);//给数组赋值;

??}

??for?(i?=?0;?i??9;?i++)??//10个数,进行9轮比较;

??{?for?(j?=?0;?j??9?-?i;?j++)??//第一个数比较9次,依次递减;

????{?if?(a[j]??a[j?+?1])??//交换值;

??????{?t?=?a[j];

????????a[j]?=?a[j?+?1];

????????a[j?+?1]?=?t;

??????}

????}

????for?(i1?=?0;?i110;?i1++)

????{?printf("%d?",?a[i1]);//输出数组的值;

????}

????printf("\n");

??}

??return?0;

}

C语言冒泡排序问题

C语言冒泡排序法的排序规则:

将被排序的记录数组R[1..n]垂直排列,每个记录R看作是重量为R.key的气泡。根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R:凡扫描到违反本原则的轻气泡,就使其向上"飘浮"。如此反复进行,直到最后任何两个气泡都是轻者在上,重者在下为止。

初始 R[1..n]为无序区。

第一趟扫描 从无序区底部向上依次比较相邻的两个气泡的重量,若发现轻者在下、重者在上,则交换二者的位置。

即依次比较(R[n],R[n-1]),(R[n-1],R[n-2]),…,(R[2],R[1]);对于每对气泡(R[j+1],R[j]),若R[j+1].keyR[j].key,则交换R[j+1]和R[j]的内容。 第一趟扫描完毕时,"最轻"的气泡就飘浮到该区间的顶部,即关键字最小的记录被放在最高位置R[1]上。

第二趟扫描 扫描R[2..n]。

扫描完毕时,"次轻"的气泡飘浮到R[2]的位置上…… 最后,经过n-1 趟扫描可得到有序区R[1..n] 注意: 第i趟扫描时,R[1..i-1]和R[i..n]分别为当前的有序区和无序区。扫描仍是从无序区底部向上直至该区顶部。扫描完毕时,该区中最轻气泡飘浮到顶部位置R上,结果是R[1..i]变为新的有序区。

c语言冒泡排序的编程为:

#include

void sort(int *a,int len)

{int i=0;

int j;

int t;

for(i=0;ilen-1;i++)[1]

{

for(j=0;jlen-i-1;j++)

{

if(a[j]a[j+1])

{

t=a[j];

a[j]=a[j+1];

a[j+1]=t;

}

}

}

}

int main(int argc, char *argv[])

{

int a[10]={

-999,2,3,77,12,88,0,-8,99,100

};

int i=0;

sort(a,10);

for(i=0;i10;i++)

{

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

}

return 0;

}

(责任编辑:IT教学网)

更多

推荐其他WEB语言文章