交换型
import java.util.Arrays;
public class ShellSort {
public static void main(String[] args) {
int arr[]={9,8,7,6,5,4,3,2,1};
Shell1(arr);
System.out.println(Arrays.toString(arr));
}
public static void Shell1(int[]arr){
int temp = 0;
for (int gap = arr.length/2; gap >0 ; gap = gap/2) {
for(int i = gap;i<arr.length;i++){
for(int j = i-gap;j>=0;j-=gap){
if(arr[j]>arr[j+gap]){
temp = arr[j];
arr[j] = arr[j+gap];
arr[j+gap] = temp;
}
}
}
}
}
}
移位式
public static void Shell2(int[]arr){
for(int gap = arr.length/2;gap>0;gap = gap/2){
for(int i = gap;i< arr.length;i++){
int j = i;
int temp = arr[j];
while(j-gap>=0&&temp<arr[j-gap]){
arr[j] = arr[j-gap];
j-=gap;
}
arr[j] = temp;
}
}
}