标签:第一个 strong 代码 希尔 最好 blog int 希尔排序 void
核心代码
1 void ShellSort(int arr[], int len) 2 { 3 int j; 4 int k; 5 int nGap; 6 int temp; 7 8 assert(arr!=NULL && len>0); 9 10 //定步长 11 for(nGap=len/2; nGap>0; nGap/=2) 12 { 13 //根据步长进行分组 14 //各组内进行插入排序 15 for(j=nGap; j<len; ++j) 16 { 17 //有序数组的最后一个 18 k = j-nGap; 19 //无序数组的第一个 20 temp = arr[j]; 21 22 while(temp<arr[k] && k >= 0) 23 { 24 arr[k+nGap] = arr[k]; 25 k -= nGap; 26 } 27 28 arr[k+nGap] = temp; 29 } 30 } 31 }
算法分析:
最好时间复杂度:O(n) 有序
平均时间复杂度:O(n^1.3)
最坏时间复杂度:O(n^2)
空间复杂度:O(1)
稳定性:不稳定
标签:第一个 strong 代码 希尔 最好 blog int 希尔排序 void
原文地址:http://www.cnblogs.com/chen-cai/p/7746377.html