1.选择排序法
#include<stdio.h>
#define N 10
int main()
{
int a[N];
int i, j, t, max;
for(i=0; i<N; i++)//循环输入
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
for(i=0; i<N-1; i++)
{
max = i;
for(j=i+1; j<N; j++){
if(a[max] < a[j]){
max = j;
}
}
t = a[max];
a[max] = a[i];
a[i] = t;
}
printf("\n");
for(i=0; i<N; i++)
{
printf("a[%d]=%d\n",i,a[i]);
}
return 0;
}
2.冒泡排序法
#include<stdio.h>
#define N 10
int main()
{
int a[N];
int i,j,t;
for(i=0;i<N;i++)//循环输入
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
for(i=0;i<N-1;i++)
{
for(j=0;j<N-1-i;j++)
{
if(a[j]>a[j+1])//进行排序
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
for(i=0;i<10;i++)
{
printf("a[%d]=%d\n",i,a[i]);
}
return 0;
}
3.快速排序法
#include<stdio.h>
int a[100], temp;//temp为基准数
void Template(int left, int right)
{
int i ,j ,t ;
if(left>right){
return;
}
temp = a[left];
i = left;
j = right;
while(i != j){
while(i<j && a[j]>=temp){
j--;
}
while(i<j && a[i]<=temp){
i++;
}
if(i<j){
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
a[left] = a[i];
a[i] = temp;
Template(left, i-1);//左递归
Template(i+1 , right);//右递归
}
int main()
{
int n, i;
printf("输入存储在数组中元素的个数:\t");
scanf("%d", &n);
printf("\n请输入存储在数组中的数:\n");
for(i=0; i<n; i++)
scanf("%d", &a[i]);
Template(0, n-1);
for(i=0; i<n; i++)
printf("\na[%d]=%d",i,a[i]);
return 0;
}