排序算法------希尔排序
为了方便大家理解,我尽量写的浅显易懂,同时希望大家把不理解的发到评论中,我会尽所能,帮助你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 }