1、冒泡排序
#include
void bubble_sort(int *a,int n)
{
int i,j,temp;
if(n<1)
{
printf("parameter error!\n");
exit(1);
}
for(i=0;i
a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
}
void main()
{
int a[10]={2,1,3,5,6,4,9,0,8,7},i;
bubble_sort(a,10);
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
}
2、插入排序
#include
void insert_sort(int *a,int n)
{
int i,j,temp,kk;
if(n<1)
{
printf("parameter error!\n");
exit(1);
}
for(i=1;i
=0;j--)
{
if(temp
3、希尔排序
#include
void shell_sort(int *a,int n,int dk)
{
int i,j,temp;
if(n<1||dk<0)
{
printf("parameter error!\n");
exit(1);
}
for(i=dk;i
=0&&temp
4、快速排序
#include
int partition(int *a,int low,int high)
{
int prior=a[low];
while(low
prior)high--;
a[low]=a[high];
while(low
5、选择排序
#include
void select_sort(int *a,int n)
{
int i,j,k,min;
if(n<1)
{
printf("parameter error!\n");
exit(1);
}
for(i=0;i
a[j])
{
min=a[j];
k=j;
}
}
if(i!=k)
{
a[k]=a[i];
a[i]=min;
}
}
}
void main()
{
int a[10]={2,1,3,5,6,4,9,0,8,7},i;
select_sort(a,10);
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
}
6、堆排序
#include
void Heapadjust(int *a,int m,int n)
{
int i;
int temp=a[m-1];
for(i=m*2;i<=n;i=i*2)
{
if(i
=1;i--)
{
Heapadjust(a,i,n);
}
for(i=n-1;i>0;i--)
{
temp=a[0];
a[0]=a[i];
a[i]=temp;
Heapadjust(a,1,i);
}
}
void main()
{
int a[10]={2,1,3,5,6,4,9,0,8,7},i;
heap_sort(a,10);
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
}
7、归并排序
#include
void merge(int source[],int target[],int start,int middle,int end)
{
int i,j,k;
for(i=start,j=middle+1,k=i;i<=middle&&j<=end;k++)
{
if(source[i]>source[j])
target[k]=source[j++];
else
target[k]=source[i++];
}
while(i<=middle) target[k++]=source[i++];
while(j<=end) target[k++]=source[j++];
}
void Msort(int source[],int target[],int start,int end)
{
int middle;
int temp[10];
if(start==end)
target[start]=source[start];
else
{
middle=(start+end)/2;
Msort(source,temp,start,middle);
Msort(source,temp,middle+1,end);
merge(temp,target,start,middle,end);
}
}
void main()
{
int a[10]={2,1,3,5,6,4,9,0,8,7},i;
int b[10];
Msort(a,b,0,9);
for(i=0;i<10;i++)
{
printf("%d ",b[i]);
}
}
8、基数排序
#include
#include
int MAX(int *a,int n)
{
int i,max;
if(n<1)
{
printf("parameter error!\n");
exit(1);
}
max=a[0];
for(i=1;i