1.插入排序
public void Sort(int[] arr){
int len = arr.length;
for (int i = 1; i < len; i++) {
int j = i - 1;
int temp = arr[i];
while (j >=0 && temp > arr[j]){
arr[j] = arr[j+1];
j--;
}
j++;
arr[j] = temp;
}
}
}
时间复杂度:O(N*N)<逆序或者接近于逆序> O(N) <升序或者接近于升序>;
空间复杂度:O(1)。
是一种稳定的排序。
2.希尔排序
package PracticeSort;
import java.util.Arrays;
public class ShellSort1 {
public static void main(String[] args) {
int[] arr ={8,9,1,7,2,3,5,4,6,0};
ShellSort1 shellSort1 = new ShellSort1();
shellSort1.Sort(arr);
System.out.println("排序后的结果为:"+ Arrays.toString(arr));
}
public void Sort(int[] arr){
for (int gap = arr.length/2; gap >0 ; gap/=2) {
for (int i = gap; i < arr.length; i++) {
int j = i;
int temp = arr[i];
while (j >= gap && arr[j - gap] > temp){
arr[j] = arr[j - gap];
j -= gap;
}
arr[j] = temp;
}
}
}
}
时间复杂度O(N^1.5)。是一种不稳定的排序。