A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© yaodd321 中级黑马   /  2014-11-5 21:20  /  837 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

今天看到论坛有问道希尔排序,特地上网搜了一下。原理: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. }
复制代码

评分

参与人数 1黑马币 +1 收起 理由
杨佳名 + 1

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马