首页 > 编程语言 > 详细

希尔排序

时间:2017-10-28 11:53:14      阅读:153      评论:0      收藏:0      [点我收藏+]

核心代码

 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)

      稳定性:不稳定

希尔排序

原文:http://www.cnblogs.com/chen-cai/p/7746377.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!