public class InsertionSort {
public static int[] insertionSort(int[] arr) { //O(n^2)
//每次循环取出后一位插入已排序数组
for (int i = 1; i < arr.length; i++) { //n
//取出插入值
int key = arr[i]; //n-1
//j为与插入值比较值下标
int j = i - 1; //n-1
//与已排序的数组比较
while (j >= 0 && key < arr[j]) { //n(n+1)/2-1
//插入值较小下,当前位向后移
arr[j + 1] = arr[j]; //n(n-1)/2
//前一位继续与插入值比较
j--; //n(n-1)/2
}
//前一位比插入值小时,后一位插入
arr[j+1] = key; //n-1
}
return arr; //1
}
}
插入排序
最新推荐文章于 2024-10-08 20:32:22 发布