插入排序法:
假设前面所有的数都已排好序,将后面的数从后向前依次和已排好序的进行比较,直到出现比它小的,插在它的后面。
代码如下:
#include <iostream>
#include <string.h>
using namespace std;
/*
**** 插入排序
已知一个已排好序的序列,对新来的数,从后往前依次与排好序的数进行比较
直到找到比此数小的,然后插在它之后。
*/
//设待排序的数组是a,长度为n
void Insert(int *a,int n)
{
for(int j=1;j<n;j++)
{
int key = a[j];
int i = j-1;
for(;i>=0;i--)
{
if(a[i]>key)
{
a[i+1]=a[i];
}
else break;
}
a[i+1]=key;
}
}
int main(int argc,char *argv[])
{
int a[8] ={31,28,12,16,19,45,53,27};
Insert(a,8);
printf("经过插入排序后的数组元素如下:\n");
for(int i = 0;i < 8;i++)
{
printf("%d\t",a[i]);
}
printf("\n");
system("pause");
return 0;
}
输出结果: