shell排序

简介:
注意while(h>0) 循环的使用.那位高手能告诉我下,为什么把这个循环去掉,为什么就有问题了呢?而我认为应该出现死循环才对啊? 但是没有出现。有兴趣的朋友,欢迎讨论
 
package high; 

public  class HighSort { 
   private  int[] a; //待排序的数组 
   public  int elems;  //数据的长度,不是数组的长度 
   private  int maxSize; 
    
   /* 
    * 初始化 
    */
 
   public HighSort( int max){ 
    maxSize = max; 
    a =  new  int[maxSize]; 
    elems =0;     
  } 
    
   public  void add( int i){ 
     if(elems==maxSize){ 
       return
    } 
    a[elems] = i; 
    elems ++; 
  } 
    
   public  void display(){ 
     for( int i=0;i<elems;i++){ 
      System.out.print(a[i]+ " "); 
    } 
     
    System.out.println(); 
  } 

// 注意传值调用陷阱 
   public  void swap( int i,  int j){ 
     int temp = a[i]; 
    a[i] = a[j]; 
    a[j] = temp; 
  } 
    
   public  void shellSort(){ 
     int h =1; 
     while(h <= elems/3){ 
      h = h*3+1; 
    } 
     while(h>0){ 
     for( int out=h;out<elems;out++){ 
       int temp = a[out];     
       int in = out; 
        
       while(in>h-1 && a[in-h]>=temp){ 
        swap(in -h,in); 
        in = in -h; 
      } 
        
      a[in] =temp; 
    } 
     
    h =(h -1)/3; 
  }} 

   public  static  void main(String[] args) { 
    HighSort array =  new HighSort(10); 
    array.add(12); 
    array.add(10); 
    array.add(3); 
    array.add(4); 
    array.add(11); 
    array.add(8); 
    array.add(54); 
    array.add(7); 
    array.add(4); 
    array.display(); 
    array.shellSort(); 
    array.display(); 
  } 



 



本文转自 randy_shandong 51CTO博客,原文链接:http://blog.51cto.com/dba10g/237034,如需转载请自行联系原作者
相关文章
|
3天前
|
搜索推荐 算法 Shell
【Shell 命令集合 文档编辑 】Linux 排序命令 sort命令使用指南
【Shell 命令集合 文档编辑 】Linux 排序命令 sort命令使用指南
31 0
|
3天前
|
存储 算法 Shell
【Shell 命令集合 文档编辑】Linux 比较两个已排序的文件 comm 命令使用教程
【Shell 命令集合 文档编辑】Linux 比较两个已排序的文件 comm 命令使用教程
47 0
|
算法 搜索推荐 Shell
Shell编程之数组排序算法(冒泡排序、直接选择排序、反转排序)
1、数组排序(使用tr、sort、for) 操作步骤; 使用tr命令将数组内每个元素之间的空格替换为换行符; 之后使用sort命令按从小到大重新排序; 最后使用for循环遍历排序后的元素值。
382 0
|
10月前
|
搜索推荐 算法 Java
【算法】Shell排序的原理与Java实现
Shell排序,也称为希尔排序(Shell Sort),是一种改进的插入排序算法。它通过将待排序的数组分割成多个较小的子数组,对这些子数组进行插入排序,最后再对整个数组进行一次插入排序。希尔排序的核心思想是通过较大的间隔比较和交换元素,使得数组中的元素能够快速地朝最终位置前进,从而提高插入排序的效率。
67 0
|
Shell Linux Windows
Linux Shell sort排序常用命令
1 sort的工作原理 sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。 [rocrocket@rocrocket programming]$ cat seq.txt banana apple pear orange [rocrocket@rocrocket programming]$ sort seq.txt apple banana orange pear 2 sort的-u选项 它的作用很简单,就是在输出行中去除重复行。
1282 0
|
3天前
|
分布式计算 Hadoop Shell
使用shell脚本实现自动SSH互信功能
使用shell脚本实现自动SSH互信功能
13 1
|
3天前
|
Unix Shell Linux
轻松编写 AIX Shell 脚本
轻松编写 AIX Shell 脚本
14 1