原理

a9605ed85af744d2e3b3feb0dbddfbb.png
1bac47d1495cd467ea32e391ace9e49.png

  1. /**
  2. * 希尔排序
  3. */
  4. public class HillSort {
  5. private static int[] array;
  6. HillSort(int[] array){
  7. this.array = array;
  8. }
  9. public void run(){
  10. int j;
  11. //第一层循环获取步长
  12. for(int gap = array.length/2; gap>0; gap/=2){
  13. for (int i = gap; i < array.length; i++) {
  14. int tmp = array[i];
  15. for (j = i; j >= gap && tmp < array[j - gap]; j -= gap) {
  16. array[j] = array[j - gap];
  17. }
  18. array[j] = tmp;
  19. }
  20. }
  21. }
  22. }