插入排序
插入排序的时间复杂度是O(N^2),空间复杂度是O(1),因为在程序实现过程中只会申请有限几个变量。
下面是实现代码
//插入排序 [l,r)区间上进行插入排序 /*数据量较小的时候O(n^2)与O(n*logn)区别不大,而且常数项可能更好一点
template<typename T>
void insertion_sort(vector<T>&vec, int L, int R) {
for (int i = L+1; i < R; i++) {
for (int j = i - 1; j >= L; j--) {
//只要vec[i]比前一个数小,就和前面的数做交换,为了保持稳定性,相等的时候不做交换
if (vec[j+1] < vec[j])
swap(vec[j+1], vec[j]);
}
}
}