插入排序的原理:
插入排序有点类似选择排序,在未排序序列中找到最小元素,存放到排序序列的起始位置 再从剩余未排序元素中继续寻找最小元素,然后放到排序序列末尾。 以此类推,直到所有元素均排序完毕。区别是:选择排序是交换,插入排序是部分平移。
java代码:
1 public static void insertSort(int[] numbers) { 2 int size = numbers.length; 3 int temp = 0; 4 int j = 0; 5 6 for (int i = 0; i < size; i++) { 7 temp = numbers[i]; 8 // 假如temp比前面的值小,则将前面的值后移 9 for (j = i; j > 0 && temp < numbers[j - 1]; j--) { 10 numbers[j] = numbers[j - 1]; 11 } 12 numbers[j] = temp; 13 } 14 }
性能分析:
时间复杂度:O(n^2)
空间复杂度:O(1)
原地排序:是
稳定排序:是