【动手写排序】希尔排序

来源:互联网 发布:网络发票号怎么查询 编辑:程序博客网 时间:2024/05/18 03:55
import org.junit.Test;


public class ShellInsertSort {
public void sort(int[] arr){
int increment=arr.length/2;
while(increment>0){
for(int i=0;i<increment;i++){
for(int j=i+increment;j<arr.length;j+=increment){
int k=j;
while(k>i && arr[k]<arr[k-increment] ){
swap(arr,k,k-1);
k-=increment;
}
}
}
increment/=2;
}
}

public void swap(int[] arr,int i,int j){
int temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}

@Test
public void test(){
int[] arr={9,8,7,6,4,5,3,1,2};
// int[] arr={4};
sort(arr);
for(int i:arr){
System.out.print(i+" ");
}
}

}


复杂度:O(n3/2)

0 0
原创粉丝点击