插入排序的基本思想是:每步将一个待排序的纪录,按其关键码值的大小插入前面已经排序的数据中的适当位置上,直到全部插入完为止。
插入排序由N - 1 趟(pass)排序组成。对于P = 1趟到P = N趟,插入排序保证从位置0到位置P上的元素为已排序状态。插入排序利用了这样的事实:位置0到位置P - 1上的元素是已排序的。如下图所示:
在第P趟,我们将位置P上的元素向左移动到它在前P+1个元素中的正确位置上。基于这种思想,写了一个简单的C语言程序来实现该算法。
附代码:
#include <QCoreApplication>
#include <iostream>
using namespace std;
void InsrttionSort(int A[],int N){
int j,P;
int Tmp;
for(P = 1;P < N;P++){
Tmp = A[P];
for(j = P;j > 0 && A[ j - 1 ] > Tmp;j--)
A[j] = A[j - 1];
A[j] = Tmp;
}
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
int A[] = {4,5,1,3,2};
InsrttionSort(A,5);
cout<< A[0]<<" ";
cout<<A[1]<<" ";
cout<<A[2]<<" ";
cout<<A[3]<<" ";
cout<<A[4]<<" "<<endl;
return a.exec();
}
输出结果为:1 2 3 4 5