package Sort;
import java.util.*;
public class ShellSort {
public int[] shellSort(int[] A, int n) {
// write code here
int gap = n/2;
while(gap>0){
for(int i=gap;i<n;i++){
while(i-gap>=0 && A[i]<A[i-gap] ){ //这个地方需要注意,每次的元素都要依次向前比较,直到数组最首端
swap(A,i,i-gap);
i -= gap;
}
}
gap =gap/2;
}
return A;
}
private void swap(int[] a, int i,int j){
if(i==j)
return;
a[i] = a[i] + a[j];
a[j] = a[i] - a[j];
a[i] = a[i] - a[j];
}
public static void main(String[] args) {
ShellSort ss = new ShellSort();
int[] a ={32,103,24,88,95,70,97,15,102,6,79,46,51,37,93,108,9,58,53,58,79,36,58,91,78,58,61,81};
a = ss.shellSort(a, 28);
System.out.println(Arrays.toString(a));
}
}
数据结构之——希尔排序
最新推荐文章于 2022-01-27 14:32:22 发布