python的sort方法实现,只是在这个基础上对基本有序的序列进行了处理。
该算法是集折半查找和插入排序为一体的,优化的插入排序。
#include <stdio.h>
#include <stdlib.h>int ls[] = {1,5,9,12,15,3,6,10,4};
int findp(int start,int end,int tem)
{
int len = end - start + 1 ;
int offset = len / 2;
int ret = 0;
if(start > end)
{
return start;
}
printf("-----%d %d\n",tem,ls[start+offset]);
if(tem >= ls[start+offset])
{
ret = findp(start+offset+1,end,tem);
}
else
{
ret = findp(start,start+offset-1,tem);
}
return ret;
}
int mzyinsert(int p,int len,int tem)
{
int i = 0;
for( i= len -1;i>=p;i--)
{
ls[i + 1 ] = ls[i];
}
ls[p] = tem;
}
int mzysort()
{
int i = 0;
int p = 0;
for(i=1;i<sizeof(ls)/sizeof(int);i++)
{
p = findp(0,i-1,ls[i]);
mzyinsert(p,i,ls[i]);
}
}
int main()
{
mzysort();
int j = 0;
for (j=0;j<sizeof(ls)/sizeof(int);j++)
{
printf("%d ",ls[j]);
}
return 0;
}