# 插入排序
插入排序的原理比较简单,也是一种最简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,插入相应位置。
# 算法步骤
- 将待排序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。
- 依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。)
# JavaScript
function swap(index1, index2, arr) {
var temp = arr[index1]
arr[index1] = arr[index2]
arr[index2] = temp
}
function insertionSort(arr) {
var i = 1,
length = arr.length
for (; i < length; i++) {
j = i
while (j > 0) {
if (arr[j] < arr[j - 1]) {
swap(j, j - 1, arr)
} else {
break
}
j--
}
}
return arr
}
# Python
def insertion_sort(arr):
length = len(arr)
for i in range(1, length):
j = i
while j > 0:
if arr[j] < arr[j-1]:
arr[j], arr[j-1] = arr[j-1], arr[j]
else:
break
j -= 1
return arr
# 总结
- 插入排序和冒泡排序一样,也有一种优化算法,叫做拆半插入排序。