天刀丐帮石头选择:关于冒泡法

来源:百度文库 编辑:高校问答 时间:2024/05/06 00:22:02
如果使用冒泡法对一组数字进行比较,设此组数字的个数为N个,那么我需要反复的比较多少次?有公式吗?公式是什么?如果可以的话,请写出次公式的推导过程

哈哈,我还在,又来回答了!

基本思路:对尚未排序的各元素从头到尾依次依次比较相邻的两个元素是否逆序(与欲排顺序相反),若逆序就交换这两元素,经过第一轮比较排序后便可把最大(或最小)的元素排好,然后再用同样的方法把剩下的元素逐个进行比较,就得到了你所要的顺序。可以看出如果有N个元素,那么一共要进行n-1轮比较,第I轮要进行j=n-i次比较。
你是要程式还是什么?
C程式可以参考下面
C语言为例:注意哦:本例a[0]不用,只用a[1]~a[10],以符合人们的习惯,所以定义为a[11]。

main()

{
int a[11];
int i,j,k;
printf("intput 10 numbers:\n");
for(i=1;i<11;i++)
scanf("%d",&a[i]);
printf("\n");
for(i=1;i<=9;i++)
for(j=1;j<=10-i;j++)
if(a[j]>a[j+1])
{
k=a[j];a[j]=a[j+1];a[j+1]=k;
}
printf("the sorted numbers:\n");
for(i=1;i<11;i++)
printf("%d ",a[i]);
}