package sort;
import java.util.ArrayList;
/*
* 希尔排序
*
* 希尔排序其实就是在插入排序基础上,加上一个步长计算
*/
public class shellSort
{
int gap ;//步长
int [] array = { 9 , 4 , 1 , 3 , 5 , 6 , 8 } ;
public void sort ()
{
//增量序列
for ( gap = array.length/2 ; gap >= 1 ; gap = gap/2 )
{
//插入排序 第一次以步长所对应的数据为起点
for ( int i = gap ; i < array.length ; i ++ )
{
//与插入不同的是,插入是起点与起点前面数据一一比较(--) 希尔是以固定步长的数据比较,起点下标越往后比较的越多
for ( int j = i - gap ; j >= 0 && array [j] > array [j+gap] ; j -= gap )
{
int temp = array [j] ;
array [j] = array [j+gap] ;
array [j+gap] = temp ;
}
}
}
}
public void display ()
{
for ( int i = 0 ; i < array.length ; ++ i )
{
System.out.print ( array [i] + " " );
}
System.out.println ( );
}
}
12-22