1.简单排序:
#include <stdio.h>
int main()
{
int score[5]={5,3,5,2,8},b[5];
for(int i=0;i<5;i++){
for(int j=i+1;j<5;j++){
if(score[i]<score[j])
{
b[i]=score[i];
score[i]=score[j];
score[j]=b[i];
}
}
printf("%d ",score[i]);
}
return 0;
}
2.桶排序:
#include <stdio.h>
int main()
{
int a[11],i,j,t;
for(i = 0;i <= 10;i++)
{
a[i] = 0; //初始化为0
}
for(i = 1;i <= 5;i++) //循环读入5个数
{
scanf("%d",&t); //把每一个数读到变量t中
a[t]++; //进行计数
}
for(i = 10;i >= 0;i--) //依次判断a[0]~a[10]
{
for(j = 1;j <= a[i];j++) //出现几次就打印几次
{
printf("%d ",i);
}
}
// getchar();
// getchar();
return 0;
}
3.快速排序:
#include <stdio.h>
int a[100],n; // 定义全局变量
void quicksort(int left,int right)
{
int temp,i,j,t;
i=left;
j=right;
if(left>right)
return;
temp=a[left];//以数组第一个值来作为基准数
while(i!=j)
{
//先从右往左找---右遍历
while(a[j]>=temp && i<j)
{
j--;
}
//再从左往右找---左遍历
while(a[i]<=temp && i<j)
{
i++;
}
//当从左右遍历时,两个数没有相遇时,进行交换
if(i<j)
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
//最终将基准数归位
a[left]=a[i];
a[i]=temp;
quicksort(left,i-1);//继续处理左边的,一个递归过程
quicksort(i+1,right);//继续处理右边的,递归过程
}
int main()
{
//读入数据
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
quicksort(1,n); //快速排序调用
for(int i=1;i<=n;i++)
{
printf("%d ",a[i]);
}
return 0;
}