数据结构与算法:十大排序算法之希尔排序

数据结构与算法:十大排序算法之希尔排序_数据结构

图来源:[​​希尔排序​​]

package TopTenSortingAlgorithms;

import java.util.Arrays;


//希尔排序
public class ShellSort {
public static void main(String[] args) {
int[] arr={2,4,8,6,2,3,9,7};
int[] shell_sort = shell_sort(arr);
System.out.println(Arrays.toString(shell_sort));



}

static int[] shell_sort(int arr[]){
int i=0,j=0,increate=0,key=0;
//初始增量 n/2 每一趟之后除以2
for (increate=arr.length/2;increate>0;increate/=2){
//每一趟使用插入排序
for (i=increate;i<arr.length;i++){
key=arr[i];
//key<arr[j-increate] 判断选中的这个值,与索引为j-inreate的这个值大小
for (j=i;j>=increate&&key<arr[j-increate];j-=increate){
arr[j]=arr[j-increate];//若索引为j-inreate的这个值大,则交换
}
arr[j]=key;
}

}
return arr;
}
}