插入排序,对于少量元素的排序,它是一个有效的算法,其算法时间复杂度为O(n2),需要一个额外空间。
插入排序是稳定的排序。
插入排序伪码过程命名为INSERTION-SORT,其中参数为A[1..n],伪码为:
INSERTION-SORT(A)
for j=2:A.length
key=A[j]
i=j-1
whilei>0 && A[i]>key
A[i+1]=A[i]
i=i-1
A[i+1]=key
C++源码为:
//插入排序
#include<iostream>
using namespace std;
//插入排序声明
void InsertionSort(int a[],int n);
//主函数
int main()
{
//定义一个无序数组
int a[]={5,2,4,6,1,3};
//定义排序数组的长度
int length=sizeof(a)/sizeof(int);
//进行插入排序
InsertionSort(a,length);
for(int i=0;i<length;i++)
{
cout<<a[i]<<endl;
}
system("pause");
return 0;
}
//插入排序函数定义
//a[]是要排序的数组,n是数组的长度
void InsertionSort(int a[],int n)
{
int j=0,i=0,key=0;
for(j=1;j<n;j++)
{
//保存要排序的数
key=a[j];
//定义循环变量i
i=j-1;
//从a[j-1]开始与key(a[j])比较,找到a[j]要插入的位置i
//i>-1主要是对第一个和第二个数进行排序
while(i>-1 && a[i]>key)
{
//比key大的数依次后移
a[i+1]=a[i];
//定义下一个要比较数的索引
i=i-1;
}
//将key(a[j])插入到i+1位置上
//由于while循环退出时,a[i]是小于key的,所以key应插入到i+1的位置上
a[i+1]=key;
}
}