目录
原版
对于n个待排序的数字,两两之间比较大小然后交换顺序,理论上要进行n-1轮,每一轮比较n-1次。
代码
#include<stdio.h>
int main()
{
int i,j,s,a[10];
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<9;i++)//每一轮
for(j=0;j<9;j++)//每一次交换
if(a[j]<a[j+1])//交换
{
s=a[j];
a[j]=a[j+1];
a[j+1]=s;
}
for(i=0;i<10;i++)
{
printf("%d",a[i]);
if(i==9)
printf("\n");
else
printf(" ");
}
}
升级版
因为可能并不需要进行n-1轮就已经排序完毕了,所以改成如果有一轮中没有发生交换就结束break出来。
代码
#include<stdio.h>
int main()
{
int i,j,s,a[10],flag;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<9;i++)
{
flag=0;
for(j=0;j<9;j++)
if(a[j]<a[j+1])
{
s=a[j];
a[j]=a[j+1];
a[j+1]=s;
flag=1;
}
if(flag==0)
break;
}
for(i=0;i<10;i++)
{
printf("%d",a[i]);
if(i==9)
printf("\n");
else
printf(" ");
}
}
冒泡排序进化版———快速排序
https://blog.csdn.net/weixin_62264287/article/details/122871477
插入排序 直接插入
https://blog.csdn.net/weixin_62264287/article/details/122895216
选择排序
https://blog.csdn.net/weixin_62264287/article/details/122735355?spm=1001.2014.3001.5502