C语言排序法(选择排序法/冒泡排序法)

拼搏现实的明天。 2022-07-28 05:20 330阅读 0赞

选择排序法

#include

void main()

{

int i,j,k,temp,a[10];

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

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

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

{

k=i; //保存i的值,用k来进行循环排序

for(j=i+1;j<10;j++) //将第i个元素后面的元素与第i个元素进行比较

if(a[k]<a[j])//如果第k=i个元素后面的元素小于i号元素,交换两个元素的标号, 这样就将最小元素的标号放到最前面

k=j; //记录最大的位置

temp=a[k];//内循环结束后,交换两个标号下的元素的值

a[k]=a[i];

a[i]=temp;

}

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

printf(“%d”,a[i]);

}

选择排序法的优点是速度快,比较出最大(最小)的数字后才交换顺序。若内循环做完并未发现最大(最小)数,则自身交换,故交换次数为外循环循环次数。

冒泡排序法

#include

void main()

{

inti,j,k,temp,a[10];

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

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

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

{

for(j=i+1;j<10;j++)

{

if(a[i]<a[j])

{

temp=a[i]; //如果后面的数大于前面的数,交换数据。 内循环完成后a[0]存的数字是最大的。

a[i]=a[j];

a[j]=temp;

}

}

}

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

printf(“%d”,a[i]);

}

冒泡排序法优点是程序简单,但是较繁琐,运行较慢,因为每次比较完最小(最大),内循环就要完成一次交换。

综上所述,建议使用选择排序法。另外两种排序法for语句条件都是一样的。选择排序法外循环交换,内循环记录最小(最大)位置。冒泡排序法则在内循环完成交换。

发表评论

表情:
评论列表 (有 0 条评论,330人围观)

还没有评论,来说两句吧...

相关阅读

    相关 冒泡排序(C语言)

    冒泡排序法原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换, 这样一趟过去后,最大或最小的数字被交换到了最后一位, 然后再从头开始进行两两比较交换,

    相关 冒泡排序c语言

    冒泡排序法 排序过程: (1)比较第一个数与第二个数,若为逆序a\[0\]>a\[1\],则交换;然后比较第二个数与第三个数;依次类推,直至第n-1个数和第n个数比较为止—