希尔排序 java实现

来源:互联网 发布:app推广 aso优化方案 编辑:程序博客网 时间:2024/06/05 05:03

希尔排序属于插入排序的一种,也称为缩小增量法,是插入排序的一种改进版本,其基本思想是,先取一个小于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));            }     }}

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

原创粉丝点击