黑马程序员技术交流社区

标题: 希尔排序 [打印本页]

作者: yaodd321    时间: 2014-11-5 21:20
标题: 希尔排序
今天看到论坛有问道希尔排序,特地上网搜了一下。原理:http://blog.csdn.net/cjf_iceking/article/details/7916194
代码实现:
  1. package cn.itcat.damo1;
  2. /*
  3. * 希尔排序
  4. */
  5. public class Shell {
  6.        
  7.         public static void main(String[] args) {
  8.                 int[] arr = {1,3,2,4,49,38,65,97,76,13,27,49,78,34,12,64,1};
  9.                 shellSort(arr);
  10.         }

  11.         private static void shellSort(int[] arr) {
  12.                 System.out.println("排序之前:");
  13.                 //遍历数组
  14.                 for(int i=0;i<arr.length;i++)
  15.                         System.out.print(arr[i]+" ");
  16.                 //希尔排序
  17.                 int len = arr.length;
  18.                 while(true){
  19.                         //依次缩减len/2的增量
  20.                         len = len/2;
  21.                         for(int i=0;i<len;i++){
  22.                                 for(int j=i+len;j<arr.length;j=j+len){
  23.                                         int temp = arr[j];
  24.                                         int k=0;
  25.                                         for(k=j-len;k>=0&&arr[k]>temp;k=k-len){
  26.                                                 arr[k+len] = arr[k];
  27.                                         }
  28.                                 arr[k+len] = temp;
  29.                                 }
  30.                         }
  31.                        
  32.                         if(len == 1)
  33.                                 break;
  34.                 }
  35.                 System.out.println();
  36.                 System.out.println("排序之后:");
  37.                 for(int i=0;i<arr.length;i++)
  38.                         System.out.print(arr[i]+" ");
  39.         }

  40. }
复制代码






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2