阅读量:0
插入排序的思想
每一趟将一个待排序元素,按其排序码大小插入到前面已经排好序的一组元素的适当位置上,直到所有待排序元素元素全部插入为止。
插入排序的代码实现
第一轮:
j = 0 对比值:5 6>5 6,6,4 j = -1 5,6,4
第二轮:
j = 1 对比值:4 5>4 5,6,6
j = 0 对比值:4 5,5,6 j=-1 4,5,6
function insertionSort(arr) { var i, j, key; for (i = 1; i < arr.length; i++) { key = arr[i]; j = i - 1; // 将大于key的元素向后移动 while (j >= 0 && arr[j] > key) { arr[j + 1] = arr[j]; j = j - 1; } // 插入key arr[j + 1] = key; } return arr; }
插入排序的复杂度
时间复杂度
插入排序的平均时间复杂度为
O(n^2)
,其中n是数组的长度。最好情况下是O(n)
空间复杂度:O(1)