希尔排序-java实现

来源:互联网 发布:高级数据库工程师 编辑:程序博客网 时间:2024/05/16 18:27
  1. /**
  2. * 不稳定排序
  3. * 希尔排序:设置增量为数组长度的一半,每次迭代减少为上一次的一半,找到选出的几个元素进行选择排序
  4. * 直到增量为1退出循环
  5. */
  6. public class ShellSort {
  7. private void shellSort(int[] a) {
  8. int d = a.length;
  9. while(true){
  10. d /= 2;
  11. for(int i = 0;i+d<a.length;i=i+d){
  12. for(int j = i+d;j<a.length;j=j+d){
  13. if(a[i] > a[j]){
  14. //交换
  15. int temp = a[i];
  16. a[i] = a[j];
  17. a[j] = temp;
  18. }
  19. }
  20. }
  21. if(d==1){
  22. break;
  23. }
  24. }
  25. }
  26. public static void main(String[] args) {
  27. PrintUtil.print("希尔排序");
  28. int[] a = { 10, 8, 3, 9, 47, 12, 14, 8, 5, 0, 2,10 };
  29. PrintUtil.printArray(a, PrintUtil.HORIZONTAL);
  30. ShellSort sort = new ShellSort();
  31. sort.shellSort(a);
  32. PrintUtil.printArray(a, PrintUtil.HORIZONTAL);
  33. }
  34. }

0 0
原创粉丝点击