插入排序
* 插入排序将数组分为排序区域和非排序区域,每次将
* 排序区域的值和排序区域的比较,找到合适的位置然后
* 插入。
* 非排序区域的值和排序区域的值的比较时是从排序区域的后面
* 往前面依次比较public static int[] insertSort(int[] nums) {
int n = nums.length;
if (n <= 1) return nums;
for (int i = 1; i < n; i++) {
int value = nums[i];
int j = i - 1;
for (; j >= 0; j--) {
if (nums[j] > value) {
nums[j+1] = nums[j];
}else {
break;
}
}
nums[j+1] = value;
}
return nums;
}由于插入排序只需要一个额外的变量来存储被插入的数值,所以插入排序的空间复杂度是O(1),所以是原地排序
* 又因为插入排序不会改变两个相同的元素的位置,所以插入排序是稳定的排序