(blog主要用于展示算法流程)
插入排序算法:通过对未排序的数据逐个插入合适的位置而完成排序工作
流程:
(1)先对数组前两个数据进行从小到大排序
(2)将第三个数据与前两个数据比较,将第三个数据插入合适的位置
(3)将第四个数据插入已排序好的前三个数据中
(4)不断重复,直到把最后一个数据插入合适的位置
#include<iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
void InsertionSort(int a[],int len)
{
int t;
for (int i = 0; i < len; i++)
{
t=a[i];
int j=i-1;
while (j>=0&&t<a[j])
{
a[j+1]=a[j];
j--;
}
a[j+1]=t;
cout<<"Sort result after"<<i+1<<"step:"; //输出每一步的排序结果
for(int k=0;k<len;k++) cout<<a[k]<<" ";
cout<<endl;
}
}
int main()
{
int a[10];
srand(time(NULL));
cout<<"Array before sorting:"<<endl;
for (int i = 0; i < 10; i++) //采用随机数作为数组输入
{
a[i]=rand()/1000;
cout<<a[i]<<" ";
}
cout<<endl;
InsertionSort(a,10);
cout<<"Array after sort:"<<endl;
for (int i = 0; i < 10; i++) cout<<a[i]<<" ";
cout<<endl;
return 0;
}