看过算法导论的人都明白,简单一个例子就能说明什么是插入排序。
将一堆顺序打乱的扑克牌堆叠到一起,从上而下一张一张把扑克牌拿到手里。在拿到手里的过程中,按照一定的顺序排列(从左到右,从大到小或者从小到大)。当所有牌被拿完的时候,插入排序就完成了。就是这么简单。
伪代码:
for j = 2 to A.length
key = A[j]
i = j - 1
while i > 0 and A[i] > key
A[i + 1] = A[i]
i = i - 1
A[i + 1] = key
解释一下这个伪代码。
A代表一个乱序数组
length是这个数组的长度
for循环遍历要插入的数组
while循环将要插入的数和其前面已经拍好序的数进行比较,找到合适的插入位置
总体来说这种算法容易理解,在生活的各个方面也会使用到。比如说我们一般人钱包里的钱币的面值排序(只装100大钞的土豪不算),还有小学生按照高低个排队,课堂按照高低个排座位等等。生活中处处都充满了插入排序。