插入排序,对于少量元素的排序是一个有效的算法。
算法导论上的伪代码:
INSERTION-SORT(A)
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
下标j指出正被插入的元素,for循环迭代将每一张牌逐个插入。
while循环选择插入位置。
时间复杂度为O(n^2),是稳定的排序方法。
C++实现:
void InsertionSort(vector<int> &A){
for (int j = 1; j < A.size(); ++j){
int key = A[j];
int i = j - 1;
while (i >= 0 && A[i] > key){//升序
A[i + 1] = A[i];
--i;
}
A[++i] = key;
}
}