当前位置: 移动互联网学院 > Java培训 > JAVA开发 > Java希尔排序算法代码实现
Java希尔排序算法代码实现 时间:2017-08-30     来源:华清远见JAVA学院

什么是Java希尔排序算法呢?

希尔排序算法实际上是一种分组插入的排序算法,又被称为缩小增量排序。今天华清Java学院小编就来和大家分享下Java希尔排序算法代码实现。

Java希尔排序算法是的基本思想是:先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为dl的倍数的记录放在同一个组中。先在各组内进行直接插人排序;然后,取第二个增量d2

对于插入排序而言,如果原数组是基本有序的,那排序效率就可大大提高。另外,对于数量较小的序列使用直接插入排序,会因需要移动的数据量少,其效率也会提高。因此,希尔排序具有较高的执行效率,其实现原理如下图。

Java希尔排序算法实现原理图
Java希尔排序算法实现原理图

Java希尔排序算法实现示例代码如下:

public static void shellSortSmallToBig(int[] data) {

int j = 0;

int temp = 0;

for (int increment = data.length / 2; increment > 0; increment /= 2) {

System.out.println("increment:" + increment);

for (int i = increment; i < data.length; i++) {

// System.out.println("i:" + i);

temp = data[i];

for (j = i - increment; j >= 0; j -= increment) {

// System.out.println("j:" + j);

// System.out.println("temp:" + temp);

// System.out.println("data[" + j + "]:" + data[j]);

if (temp < data[j]) {

data[j + increment] = data[j];

} else {

break;

}}

data[j + increment] = temp;

}

for (int i = 0; i < data.length; i++)

System.out.print(data[i] + " ");

}}

public static void main(String[] args) {

int[] data = new int[] { 26, 53, 67, 48, 57, 13, 48, 32, 60, 50 };

shellSortSmallToBig(data);

System.out.println(Arrays.toString(data));

}

X