码迷,mamicode.com
首页 > 编程语言 > 详细

插入排序(希尔排序)

时间:2019-10-27 21:02:01      阅读:91      评论:0      收藏:0      [点我收藏+]

标签:sort   http   mic   str   就是   class   循环   开始   for循环   

直接插入排序


将数组分为有序区和无序区,开始时第一个元素就是有序区,与第二个元素比较,第一二元素排好序后,再将第三个元素与前2个元素比较插入到合适的位置。后面依次操作。

 1 void insertSort(int num[],int l) {
 2     
 3     int i,j,t;
 4     for(i=1;i<l;i++)                    //i从1开始 
 5         for(j=0;j<=i;j++){                //j每次都要从0开始,一直到等于i 
 6             if(num[j]>num[i]){            //i与前面的有序区进行比较再交换 
 7                 t = num[j];
 8                 num[j] = num[i];
 9                 num[i] = t;
10             }
11         }
12     
13 }

 

 

希尔排序

技术图片

技术图片

技术图片

 

 1 void shellSort(int num[],int l){
 2     
 3     int i,j;
 4     int t;                                    //临时变量 
 5     int n;                                    //i每次开始的下标 
 6     int k=(l/3)+1;                            //每次的增量 
 7     while(k>0){                                //k>0就一直排序 
 8         for(n=0;n<k;n++)                    //在k变换的情况下,n每次重置为0
 9             for(i=n+k;i<l;i+=k)                //这两个for循环就是直接插入排序,只不过每次增量为k    
10                 for(j=n;j<=i;j+=k){
11                     if(num[j]>num[i]){
12                         t = num[i];
13                         num[i] = num[j];
14                         num[j] = t;
15                     }
16                 }
17         k--;                                //每次减小增量    
18     }    
19 }

 

插入排序(希尔排序)

标签:sort   http   mic   str   就是   class   循环   开始   for循环   

原文地址:https://www.cnblogs.com/lsy-lsy/p/11748695.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!