您的位置:首页 > 其它

算法基础--插入排序递归版

2016-01-16 23:06 417 查看
1.原址插入排序

注意:算法导论中的数组下标从1开始,C程序中是从0开始的。

void insertion_sort(int A[], int length)
{
int i, j;
int key;
for(j = 1; j < length; j++)
{
key = A[j];
i = j - 1;
while(i >= 0 && A[i] > key)
{
A[i+1] = A[i];
i--;
}
A[i+1] = key;
}
}
2.递归插入排序

void insertion(int A[], int length){
if(length > 1){
int key = A[length-1];
int i = length-2;
while(i >= 0 && A[i] > key){
A[i+1] = A[i];
i--;
}
A[i+1] = key;
}
}

void recursive_insertion_sort(int A[], int length){
if(length > 1){
recursive_insertion_sort(A, length-1);
insertion(A, length);
}
}


3.插入排序算法改进(二分查找插入排序)

就是把A[j]与前面的元素A[1..j-1]反序扫描比较得到插入A[j]的位置改为二分查找得到插入A[j]的位置。(比较简单不再赘述)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: