思想:对于给定的数组,从索引1开始遍历到结束,对于遍历的元素,使用临时变量保存,并且把该元素以前的元素挨个和该元素比较。如果以前的元素数值较大,则该以前的元素位置后移。如果以前元素数值较小,结束比较遍历,并把临时变量的值放入结束位置后一位。
**时间复杂度:**Θ(n^2)
c++实现:
#include <iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> intput_array;
int num;
cout << "输入一串数组:";
while (true)
{
cin >> num;
intput_array.push_back(num);
if (cin.get() == '\n')
break;
}
int length = intput_array.size();
cout << "插入排序结果为:" << endl;
for (int i = 1; i < length; i++)
{
int temp = intput_array[i];
int j = i - 1;
while (j >= 0 && intput_array[j] > temp)
{
intput_array[j + 1] = intput_array[j];
j--;
}
intput_array[j + 1] = temp;
}
for (int i = 0; i < 6; i++)
{
printf("%d ", intput_array[i]);
}
return 0;
}