插入排序——希尔排序

来源:互联网 发布:神华低碳研究所 知乎 编辑:程序博客网 时间:2024/06/07 09:49

希尔排序,

原理是这样的,给定两个数组,一个是待排序数组,另一个是增量数组,(用图比较好说),

55  2  44  6  8  32  46  4  26  24  5  7       增量为5时 ,55和32一组,32和后面的5一组,然后两两比较,进行交换


代码如下:

void ShellSort(int * arr,int arr_len,int *dka,int dka_len){for(int i = 0;i < dka_len; ++ i){Shell(arr,arr_len,dka[i]);}}void Shell(int *arr,int arr_len,int dk){int i;int j;int tmp;for(i = dk;i < arr_len; ++ i){tmp = arr[i];for(j = i - dk;j >= 0 && arr[j] > tmp;j -= dk){arr[j + dk] = arr[j];}}arr[j + dk] = tmp;}


原创粉丝点击