插入排序的基本思想是将一条新纪录插入到一个含有i条记录的有序表中,使得新表依然有序。
最坏情况下,在插入之前要进行i+1次比较。因此每次插入的复杂度为O(i)。则插入排序的复杂度为O(SUM(i+1))=O(n^2);
#include <iostream>
#include "Insert.h"
using namespace std;
void InsertSort(int e,int *a,int num)
{
int j=num-1;
while(j>=0&&e<a[j])
{
a[j+1]=a[j];//当前比较元素后移
j--;
}
a[j+1]=e;
}
int main()
{
int data[5]={11,8,22,4,7};
for (int i=1;i<5;i++)
{
InsertSort(data[i],data,i);
}
for (i=0;i<5;i++)
{
cout<<data[i]<<' ';
}
cout<<endl;
return 0;
}
当无序的元素数目k<<n 时 O(kn) 是相当快而且实现简单。当n<30时也是最快的排序方法;