九大排序算法之希尔排序
- 算法思想
排序思想 - 代码实现
import java.util.*;
//希尔排序(插入排序的快速排序算法):使数组中任意间隔为h的元素是有序的,h不断减小
//时间复杂度:NlogN,空间复杂度:1
public class Shell {
public static void sort(Comparable[] a) {
int N=a.length;
int h=1;
while(h<N/3)h=3*h+1;
while(h>=1) {
for(int i=h;i<N;i++) {
for(int j=i;j>=h&&less(a[j],a[j-h]);j-=h) {
exch(a,j,j-h);
}
}
h/=3;
}
}
private static boolean less(Comparable v,Comparable w) {
return v.compareTo(w)<0;
}
private static void exch(Comparable[] a,int i,int j) {
Comparable t=a[i];
a[i]=a[j];
a[j]=t;
}
private static void show(Comparable[] a) {
for(int i=0;i<a.length;i++) {
System.out.print(a[i]+" ");
}
System.out.println();
}
public static boolean isSorted(Comparable[] a) {
for(int i=1;i<a.length;i++) {
if(less(a[i],a[i-1])) return false;
}
return true;
}
public static void main(String[] args) {
String[] a= {"3","2","4","5","7"};
sort(a);
assert isSorted(a);
show(a);
}
}

本文深入解析了希尔排序算法,一种改进的插入排序算法,通过将数组分割成多个子序列进行独立排序,然后逐步减少子序列长度直至整个数组有序,从而提高了排序效率。文章详细介绍了希尔排序的算法思想、代码实现,并提供了实例演示。
18万+

被折叠的 条评论
为什么被折叠?



