原理:
插入排序的基本操作是“有序插入”,也就是将元素逐一插到有序序列中,保持序列有序,从而使有序序列的长度不断增加。
对数组a[n]排序时,起初a[0]被认为是长度为1的有序子序列。然后,按照有序插入法,i从1到n-1循环地将a[i]插入到有序序列中。
在插入a[i]前,数组a的前半段(a[0]至a[i-1])是有序段,后半段(a[i]~a[n-1])是停留于输入次序的无序段。
插入a[i]使a[0]~a[i]有序。也就要为a[i[找到有序位置j(0<=j<=i),将a[i]插在a[j]的位置上。
//简单插入排序算法
//2020-05-18
#include <iostream>
using namespace std;
//升序排列,len为数组长度
void insert_sort(int a[], int len)
{
for (int i = 1; i < len; ++i)
{
int temp = a[i];
int j=i-1;
while(j>=0 && a[j]>temp)
{
a[j + 1] = a[j];
--j;
}
a[j + 1] = temp;
}
}
int main()
{
int len;
int array[100];
cout << "输入排序数组的长度:";
while (cin >> len)
{
cout << "输入排序数组:";
for (int i = 0; i < len; ++i)
cin >> array[i];
//接下来开始排序
insert_sort(array,len);
cout << "排序后输出:" << endl;
for (int i = 0; i < len; ++i)
cout << array[i] << ' ';
cout << endl;
cout << "输入排序数组的长度:";
}
return 0;
}