大家都在看
请问冒泡法与选择法的区别在哪啊??
最佳答案
下面的这个例子比较清晰,你可以比较一下
例如,题目为:对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"); } 重要的就是红色那两名,其余的输入与输出都是公共的.希望对大家有帮助.
声明:知趣百科所有作品均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请在页面底部查找“联系我们”的链接,并通过该渠道与我们取得联系以便进一步处理。