请问冒泡法与选择法的区别在哪啊??

2025-02-18 17:05:4270 次浏览

最佳答案

下面的这个例子比较清晰,你可以比较一下

例如,题目为:对10个数进行排序,由从小到大的顺序.

1:选择法

所谓的选择法就是先将10个数中最小的数与a[0]对换;再将a[1]到a[9]中的最小数与a[1]对换,依次类推,每比较一次,就找出一个没有经过排序的数中最小的一个.所以一共比较9轮.

例如用4个数排序,第一次比较就是把4个数中的最小的数与a[0]对换,

第二次:把余下的3个数中最小的数与除了a[0]的最小的数与a[1]对换.

以此类推.

根据此思路,编写程序如下:

#include

void main()

{void s(int arr[],int n)

int a[10],i;

printf("enter the array\n");

for(i=0;i<10;i++)

scanf("%d",&a[i]);

s(a,10);

printf("the sorted array:\n");

for(i=0;i<10;i++)

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

printf("\n");

}

void s(int arr[],int n)

{int i,j,k,t;

for(i=0;i

{ k=i;

for(j=i+1;j

if(arr[j]

k=j;

t=arr[k];arr[k]=arr[i],arr[i]=t;

}

}

2:冒泡法

冒泡法也称为起泡法,原理就是相邻的两个数比较,将小的调到前头,若是从大到小,则是将大的调到前头.

分为外循环和内循坏.

根据此思路,编写程序如下:

#include

void main()

{int a[10];

int i,j,t;

printf("enter the array\n");

for(i=0;i<10;i++)

scanf("%d",&a[i]);

printf("\n");

for(i=0;i<9;i++)

for(j=0;j<9-i;j++)

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

{t=a[j];a[j]=a[j+1],a[j]=t; }

printf("the sorted array:\n");

for(i=0;i<10;i++)

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

printf("\n");

}

重要的就是红色那两名,其余的输入与输出都是公共的.希望对大家有帮助.

声明:知趣百科所有作品均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请在页面底部查找“联系我们”的链接,并通过该渠道与我们取得联系以便进一步处理。