#include<iostream>
using namespace std;
int InsertionSort(int a[],int n){
//用插入排序对给定数组排序
//输入:n个可排序元素构成的一个数组a[0...n-1]
//输出:非降序排列的数组a[0...n-1]
int i,j,value;
for (i = 1; i < n; i++)
{
value=a[i]; //i表示未排序部分的下标索引
j=i-1; //j表示已排好序的部分的下标索引,插入的就是此部分
while (j>=0 && a[j]>value) //从右向左扫描有序的子数组,直到遇到第一个小于等于value的元素
{
a[j+1]=a[j];
j--;
}
a[j+1]=value; //把value插在这个元素后面
}
return 0;
}
int main(){
int array[11] = {9,5,6,4,2,3,11,8,1,10,7};
int n=sizeof(array)/sizeof(int);
cout<<"排序前:";
for (int i = 0; i < n; i++)
cout<<array[i]<<" ";
cout<<endl;
InsertionSort(array,n);
cout<<"排序后:";
for (int i = 0; i < n; i++)
cout<<array[i]<<" ";
cout<<endl;
return 0;
}
结果: