希尔排序JAVA实现

 代码不太长,笔者这里只是说下思路,大家实在不懂可以先看下网上shell排序的原理,在来看代码。

其实希尔排序,就是一个多次调用的间距为变化数的快速排序,间距笔者在代码中用increment表示,increment每改变一次就对x,x+increment,x+2*increment的数进行一次直接交换排序,直到increment变为1时停止

 

  
  
  
  
  1. package second; 
  2.  
  3. public class ShellSort {    
  4.     static void shellSort(int[] a){ 
  5.         int i,j,tmp,increment; 
  6.         for(increment=a.length/2;increment>0;increment/=2
  7.         { 
  8.             i=increment; 
  9.             for(;i<a.length;i++) 
  10.             { 
  11.                 j=i; 
  12.                 tmp=a[i]; 
  13.  
  14.                     for(;j-increment>=0;j-=increment) 
  15.                     { 
  16.                         if(tmp>a[j-increment]) 
  17.                         { 
  18.                             a[j]=a[j-increment]; 
  19.                         } 
  20.                         else 
  21.                             break
  22.                     } 
  23.                     a[j]=tmp; 
  24.             } 
  25.         } 
  26.     } 
  27.      
  28.     public static void main(String[] args) { 
  29.         int[] a={23,33,11,1,76,56,32}; 
  30.         shellSort(a); 
  31.         for(int i=0;i<a.length;i++){ 
  32.             System.out.print(a[i]+","); 
  33.         } 
  34.     } 
  35.      
  36.      

 

本文出自 “老江北” 博客,转载请与作者联系!

你可能感兴趣的:(java,数据结构,职场,希尔排序,休闲)