插入排序和选择排序在我看来是一样的。
选择排序是选取最小/大的元素依次插入;插入排序则是依次选元素,将每个元素插入到最合适的位置。
时间复杂度: O(n*n)
空间复杂度: O(1)
#include<iostream>
void InsertSort(vector<int> array)
{
//第一步总是先判断输入的合法性。
if(array.size() == 0)
return;
if(array.size() == 1)
reutrn;
for(int i = 1; i < array.size(); i++) //从第二个元素开始遍历
{
int insert = array[i];
for(int j = i-1; j >= 0; j-- ) //从第二个元素的前一个开始向前遍历,
{
if(array[j] > insert) //如果第二个之前的某个元素大于此轮选中的那个元素,那么将这个比较大的数往后放
{
std::swap(insert, array[j]);
}
}
}
}