原版
对于n个待排序的数字,两两之间比较大小然后交换顺序,理论上要进行n-1轮,每一轮比较n-1次。
代码
代码语言:javascript复制#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出来。
代码
代码语言:javascript复制#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