1959年Shell发明,第一个突破O(n2)的排序算法,是简单插入排序的改进版。它与插入排序的不同之处在于,它会优先比较距离较远的元素。希尔排序又叫缩小增量排序。
算法描述
先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,具体算法描述:
package study; import java.util.Arrays; public class test { public static void main(String[] args) { int arr[] = new int[]{5, 4, 9, 2, 7, 3, 1, 8}; sort(arr); System.out.println(Arrays.toString(arr)); } public static void sort(int[] arr) { for (int grp = arr .length/2;grp>0;grp/=2){ for(int i = grp;i<arr.length;i++){ for(int j= i-grp;j>=0;j-= grp){ if (arr[j] > arr[j+grp]){ int temp = arr[j]; arr[j]=arr[j+grp]; arr[j+grp] = temp; }else { break; } } } } } }