很好的一个博客:http://www.cnblogs.com/morewindows/archive/2011/08/13/2137415.html
通俗易懂,参考。
插入排序:
#include"sort_header.h"
void insert(int a[],int n)
{
int i;
int j;
for(i=1;i<n;i++)
{
j=i;
for(;j>=0;j--) //后面新插入的数据,依次和已排序列比较
{
if(a[j-1]>a[j])
{
a[j-1]^=a[j]^=a[j-1]^=a[j];
}
else
break; //如果新插入的数据<已排序列的较大数,则不用继续循环
}
}
puts("插入");
}
快速排序,相对复杂,脑海中有一个排序移动的过程,算法就好写了。
快速排序:
#include"sort_header.h"
void quick(int a[],int low,int high)
{
int i =low, j = high;
int key = a[low];
while(i<j)
{
while(i<j && a[j]>=key)
j--;
if(i<j) //如果a[j]<key
{
a[i]=a[j];
i++;
}
while(i<j && a[i]<key)
i++;
if(i<j)
{
a[j]=a[i];
j--;
}
}
a[i]=key;
if(low<i-1) quick(a,low,i-1);
if(i+1<high)quick(a,i+1,high);
}