排序算法------希尔排序

为了方便大家理解,我尽量写的浅显易懂,同时希望大家把不理解的发到评论中,我会尽所能,帮助你l理解。

欢迎qq进行交流问题:

      本人QQ :1770115451             算法交流群: 1061907071

插入排序算法:

   希尔排序也是一种插入排序,他是简单的插入排序,经过改进后的一个更高效的版本,也被称为“缩小增量排序”

其基本思想就是,先将数组分成 长度/2 的增量序列,然后一次从增量序列的第二个元素进行插入排序,插入完成之后,

在继续将增列序列的增量/2 ,直到增量序列为1时,排序完毕

 

 

算法实现步骤:

  第一步:将有n个元素的数组分成n/2的增量序列,并不断缩小增量   

  第二步: 从增量序列第二个元素开始 ,依次进行插入排序,间隔为增量

  第三步:当增量序列为1时候,排序完毕

代码实现

 

 1     public static void shellSort(int arr[]){
 2         //不断缩小增量
 3         for(int interval=arr.length/2;interval>0;interval=interval/2){
 4             //增量为    
 5             for(int i=interval;i<arr.length;i++){
 6                 int target=arr[i];
 7                 int j=i-interval;//定义一个向前比较的坐标
 8                 while(j>-1&&target<arr[j]){
 9                     arr[j+interval]=arr[j];//小于就往后挪
10                     j-=interval;
11                 }
12                 arr[j+interval]=target;        
13             }
14         }        
15     }

 

posted @ 2022-11-10 18:26  木原纺  阅读(31)  评论(0编辑  收藏  举报