插入排序算法的实现是比较简单的。
首先给出插入排序的代码。
#include<iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int a[n];
for (int i = 0; i<n; i++)
cin >> a[i];
for (int i = 1; i<n; i++)//此段为插入排序的实现
{
int key = a[i];
int j = i - 1;
while (j >= 0 && a[j]>key)
{
a[j + 1] = a[j];
j--;
}
a[j + 1] = key;
}
for (int i = 0; i<n; i++)
cout << a[i] << " ";
cout << endl;
return 0;
}
下面讲述其实现过程:
参照插入排序的实现可以发现,首先把序列分为两部分,第1项为前一部分,第2项至第n项为后一部分。
此时我们可以假设第1项是排好序的(因为只有1项),然后让第2项与第1项比较大小,如果第2项小于第1项,则第2项插入第1项之前,反之则不发生变化。此时前两项是排好序的。
以此类推,当第j项时,前j-1项是排好序的,让第j项与前面的部分依次比较,直到插入到合适的位置为止。
最后得到排好序的序列。