02 用js实现插入排序
插入排序(英语:Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到 O ( 1 ) 的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。— 摘自维基百科
Column 1 | Column 2 |
---|---|
平均时间复杂度 | O ( n 2 ) |
最坏时间复杂度 | O ( n 2 ) |
最优时间复杂度 | O ( n ) |
空间复杂度 | 总共 O ( n ) |
需要辅助空间 | O ( 1 ) |
步骤: 数组 arr = [a1,a2,a3,a4,a5]
- 取出a2( [a1] 可以看作一个有序数组)
- 让a2与前面的a1进行比较,如果a1大,双方交换位置
- 依次取a3,a4等元素,重复以上步骤,如此进行n-1次,数组完成升序排序
<script>
function insert_sort(arr){
//从第二个元素开始,依次取出第三个,第四个...,循环n-1次
for (let i=1; i<arr.length; i++){
let tmp = arr[i] //临时变量,用来存储取出的元素,与前面的元素进行比较
for (let j=i-1; j>=0; j--){
if (arr[j+1] < arr[j]){
arr[j+1] = arr[j]
arr[j] = tmp
}else{
break
}
}
}
}
let arr1 = [2,1,4,9,6,5,7,34,21,45,38,98,76]
insert_sort(arr1)
console.log(arr1)
</script>
如有疑问,或者有不足之处,欢迎在评论区下留言讨论