冒泡排序:顾名思义,它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来,就像冒泡泡一样。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
代码如下(从大到小):
#include<cstdio>
int main()
{
int n; //数的个数
int num[10000]; //排序范围:最多10000个数
scanf("%d",&n);
for(int i=0;i<n;i++) //输入每个数
scanf("%d",&num[i]);
for(int i=0;i<n-1;i++) //冒泡排序
for(int j=0;j<n-i;j++)
if(num[j]<num[j+1])
{
int swap=num[j];
num[j]=num[j+1];
num[j+1]=swap;
}
for(int i=0;i<n;i++)
printf("%d ",num[i]);
}
还有改进版的:
#include<cstdio>
#include<cstdlib>
int main()
{
int n,num[10000];
bool mark;
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%d",&num[i]);
for(int i=0;!mark;i++)
{
mark=true;
for(int j=0;j<n-i;j++)
if(num[j]<num[j+1])
{
int swap=num[j];
num[j]=num[j+1];
num[j+1]=swap;
mark=false;
}
}
for(int i=0;i<n;i++)
printf("%d ",num[i]);
}