排序算法-插入排序
Posted natsu-cc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了排序算法-插入排序相关的知识,希望对你有一定的参考价值。
实现原理:
插入排序算法是基于某序列已经有序排列的情况下,通过一次插入一个元素的方式按照原有排序方式增加元素。这种比较是从该有序序列的最末端开始执行,即要插入序列中的元素最先和有序序列中最大的元素比较,若其大于该最大元素,则可直接插入最大元素的后面即可,否则再向前一位比较查找直至找到应该插入的位置为止。
插入排序的基本思想是,每次将1个待排序的记录按其关键字大小插入到前面已经排好序的子序列中,寻找最适当的位置,直至全部记录插入完毕。执行过程中,若遇到和插入元素相等的位置,则将要插人的元素放在该相等元素的后面,因此插入该元素后并未改变原序列的前后顺序。我们认为插入排序也是一种稳定的排序方法。
代码:
function insertionSort(arr)
const len = arr.length;
let prevIndex, current;
for(let i = 1; i < len; i++)
prevIndex = i - 1;
current = arr[i];
while(prevIndex >= 0 && arr[prevIndex] > current)
arr[prevIndex + 1] = arr[prevIndex];
prevIndex--;
arr[prevIndex + 1] = current;
return arr;
将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。)
总结:
插入排序分析:
- 时间复杂度: 平均时间复杂度O(n^2) 、最好情况O(n)、最差情况O(n^2)
- 空间复杂度: O(1)
- 稳定性:稳定
插入排序优缺点:
- 插入排序算法简单,当待排序记录数量n很小时,局部有序时,较为适用
- 当n很大时,其效率不高
以上是关于排序算法-插入排序的主要内容,如果未能解决你的问题,请参考以下文章