希尔排序:
设待排序数组seqlist
1.取增量d = seqlist.lenth/2,(可以随机取,d<seqlist.lenth)
2.对将步长为d的元素为一组进行插入排序
3.d = d/2;
4.d == 0 ,结束算法
程序:
package com.yamino.shellsort;
public class shellsort {
private int[] mseqlist;
private int d;//增量
public shellsort()
{
setSeqlist(10);
d= (mseqlist.length-1)/2;
while(d > 0)
{
fun_shellsot();
d=d/2;
}
}
//插入排序
//一趟排序
private void fun_shellsot()
{
int i,j,n;
n =mseqlist.length ;
for(i = d+1 ;i< n;i++)
{
if(mseqlist[i] <mseqlist[i-d])
{
mseqlist[0]=mseqlist[i];
j = i-d;
do
{
mseqlist[j+d] = mseqlist[j];
j=j-d;
}while(j>0 && mseqlist[0]<mseqlist[j]);
mseqlist[j+d] = mseqlist[0];
}
}
}
public void setSeqlist(int lenth)
{
mseqlist = new int[lenth];
for(int i = 0 ;i< lenth;i++)
{
mseqlist[i] =lenth - i;
}
}
public int[] getSeqlist()
{
return mseqlist;
}
public static void main(String[] args){
int[] temp;
shellsort msort = new shellsort();
temp =msort.getSeqlist();
for(int i = 1 ;i < 10; i++)
{
System.out.print(temp[i] );
}
}
}