原理和这个一样希尔排序 ,但是时间比交换排序实现的快很多!
注:这个只是在最内层循环没有用交换而是用的插入排序
package DataStructures.sort;
import java.util.Arrays;
public class ShellSort2 {
public static void main(String[] args) {
int[] array = {12,8, 9, 1, 7, 2, 3, 5, 4, 6, 0, 10};
ShellSortArray(array);
System.out.println(Arrays.toString(array));
}
public static void ShellSortArray(int[] array){
for (int gap = array.length / 2; gap > 0; gap = gap / 2) {
for (int i = gap; i < array.length; i++) {
int j = i;
int temp = array[j];
if (array[j] < array[j - gap]) {
while (j - gap >= 0 && temp < array[j - gap] ) {
array[j] = array[j - gap];
j = j - gap;
}
array[j] = temp;
}
}
}
}
}