适合原本基本有序的序列。
时间复杂度O(n^2)。
public class Main {
public static void main(String args[]) {
int[] arr= {3,5,1};
insertSort(arr);
for(int num:arr) {
System.out.print(num);
}
}
public static void insertSort(int[] arr) {
for(int i=1;i<arr.length;++i) {
for(int j=i-1;j>=0&&arr[j]>arr[j+1];--j) {
swap(arr,j,j+1);
}
}
}
private static void swap(int[] arr, int i, int j) {//
int temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
public class Main {
public static void main(String args[]) {
int[] arr= {3,5,1};
shellSort(arr);
for(int num:arr) {
System.out.print(num);
}
}
public static void shellSort(int arr[]) {
int len = arr.length;
for(int gap=len/2; gap>=1; gap=gap/2){
for(int i=gap+1; i<len; i++){
for(int j=i-gap; j>=0&&arr[j]>arr[j+gap]; j=j-gap){
swap(arr,j,j+gap);
}
}
}
}
private static void swap(int[] arr, int i, int j) {
int temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
原文:https://www.cnblogs.com/coding-gaga/p/11055949.html