C语言帮我解释下折半插入排序代码

#include "stdio.h"
#include "conio.h"

void zbcrpx(SqList L,int(*cmp)(KeyDT,KeyDT))
{
int i,j,low,high,mid;
RecType t;
for(i=1;i<L.len;i++) /*这里循环为什么从i=1开始?不是0吗?*/
{
t=L.list[i];
low=0;
high=i-1;
while(low<=high)
{
mid=(low+high)/2;
if((*cmp)(t.key,L.list[mid].key)<0)
high=mid-1;
else
high=mid+1;
}
for(j=i-1;j>=high+1;j--) /*这里?*/
L.list[j+1]=L.list[j];
L.list[high+1]=t; /*这里怎么理解?*/
}
}

帮我解释下以上加注释的代码
可能的话帮我解释下折半插入排序的原理

谢谢了
越详细越好
我再加分
帮忙解释下以上注释的代码啊···!

急!!
或者给个像上面的代码在主函数输出 不要算法了

第1个回答  2009-01-04
你把题目给我一下!其实你要学排序最好就学
1.冒泡排序(最简单,最慢)
2。取中快排(最快,但不稳定,不过不影响大局,最好背这个)
3.桶排序(比较快,其实也还没有2的一半,就是结构稳定)
第2个回答  2009-01-05
插入排序执行到插入过程时,用折半法查找插入位置,就是折半插入排序。
你的问题要看Sqlist的数据结构
相似回答