插入排序学习笔记
代码
第一个算法就是“插入排序”。伪代码如下:
1 | def INSERTION_SORT(var A[]): |
转换成C++代码后是这样:
1 |
|
算法分析
先定义两个循环变量:i
,j
。还有每次循环的key
,也就是基准数。
接着可以从2循环到数列结尾了。我们假设a[0]~a[i]
已经排好序,基准数key就是这次循环时的i
,j
即是i-1
。
接下来再加入一层循环,这层循环的作用是把基准数key
挪到正确位置,该循环在j索引比数列最小索引小,且key
比j代表的数小时跳出(key比A[j]
小代表着基准数的位置过了,所以跳出循环后要把key
挪到j+1
的位置)。
第二层循环中,j
每次-1
,A[j+1]
转换成A[j]
,为的是将基准数key
一步一步移到它该在的位置。最后,跳出循环,收工走人。
时间复杂度
显而易见,这个算法的时间复杂度为:
$$ \theta(N^2) $$
(本章完)
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.