希尔排序 java实现

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lyt_7cs1dn9/article/details/72764532

希尔排序属于插入排序的一种,也称为缩小增量法,是插入排序的一种改进版本,其基本思想是,先取一个小于n的整数i1作为第一个增量,所有距离为a的记录放在同一组,把数组的全部记录分成了a组子序列,再对各组子序列进行直接插入排序,然后,取第二个增量i2作为第二个增量,重复分组和排序,直到最后一个增量为1时,对所有元素进行直接插入排序。希尔排序是对直接插入排序算法的优化,实质上是一种分组插入排序算法。

代码

package demo;

import java.util.Arrays;

//希尔排序
public class ShellSort {
    public static void main(String[] args) {
            int[] data = new int[] {18,32,3,6,21,42,35,27,34,89,53};
            shellSort(data);
    }

    private static void shellSort(int[] data) {
            //此处循环增量  5、2、1
            for (int increment = data.length / 2; increment > 0; increment /= 2) {
                for (int i = increment; i < data.length; i++) {
                    int j=0;            
                    int temp = data[i];  
                    for (j = i; j >= increment; j -= increment) {  
                        if(temp > data[j - increment]){  
                            data[j] = data[j - increment];  
                        }else{  
                            break;  
                        }  
                    }   
                    data[j] = temp;  
                }
                System.out.println("增量为"+increment+"时排序结果为:"+Arrays.toString(data));
            } 
    }
}

运行结果:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/lyt_7cs1dn9/article/details/72764532