1、快速排序算法
//quick sort()
#include <stdio.h>
#include <string.h>
#include <malloc.h>
#include <stdlib.h>
#include <unistd.h>
int quick_sort(int a[],int s,int t)
{
int i=0,j=0,tmp=0;
if(s<t)
{
i=s;j=t+1;
while(1)
{
do{i++;}
while(!(a[i]>=a[s]||i==t));
do{j--;}
while(!(a[j]<=a[s]||j==s));
if(i<j)
{
tmp=a[i];
a[i]=a[j];
a[j]=tmp;
}
else
break;
}
tmp=a[s];
a[s]=a[j];
a[j]=tmp;
quick_sort(a,s,j-1);
quick_sort(a,j+1,t);
}
}
int main()
{
int i=0;
int a[10]={2,5,9,1,0,11,7,3,4,6};
printf("before sort\n");
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
putchar('\n');
quick_sort(a,0,10);
printf("after sort\n");
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
putchar('\n');
return 0;
}
2、 直接插入排序算法
//straight insert sort
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int straight_insert_sort(int a[],int n)
{
#if 1
int i=0,s=1,tmp=0;
while(s<n)
{
if(a[s]<a[s-1])
{
tmp=a[s];
i=s-1;
a[s]=a[s-1];
while(tmp<a[i])
{
a[i+1]=a[i];
i--;
}
a[i+1]=tmp;
}
s++;
}
#endif
}
int main()
{
int i=0;
int a[8]={3,1,5,7,2,4,9,6};
printf("before sort\n");
for(i=0;i<8;i++)
{
printf("%d ",a[i]);
}
putchar('\n');
straight_insert_sort(a,8);
printf("after sort\n");
for(i=0;i<8;i++)
{
printf("%d ",a[i]);
}
putchar('\n');
return 0;
}
3、选择排序算法
#include <stdio.h>
void simple_sort(int a[],int n)
{
int i=0,j=0,min=0,tmp=0;
for(i=0;i<n;i++)
{
min=i;
for(j=i+1;j<n;j++)
{
if(a[j]<a[min])
{
min=j;
}
}
if(min!=i)
{
tmp=a[i];
a[i]=a[min];
a[min]=tmp;
}
}
}
int main()
{
int i=0;
int a[10]={3,10,9,2,1,7,6,4,8,5};
printf("before sort\n");
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
printf("\nafter sort\n");
simple_sort(a,10);
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
putchar('\n');
return 0;
}