完整代码:
#include<iostream>
using namespace std;
#define num 100
int s[num];
void InsertionSort(int a[],int size)
{
for(int i=1; i<size; ++i)
{
for(int j=0; j<i; ++j)
{
if(a[j]>a[i])
{
int tmp=a[i];
for(int k=i-1; k>=j; --k)
a[k+1]=a[k];
a[j]=tmp;
break;
}
}
}
}
int main()
{
int n;
cin >> n;
for(int i=0; i<n; ++i)
cin >> s[i];
InsertionSort(s,n);
for(int i=0; i<n; ++i)
cout << s[i] << " ";
return 0;
}
代码注释:
void InsertionSort(int a[],int size)
{
//a[i]是最左的无序元素,每次循环将a[i]放到合适位置
for(int i=1; i<size; ++i)
{
for(int j=0; j<i; ++j)
{
if(a[j]>a[i])
{
//要把 a[i]放到位置 j,原下标 j到 i-1的元素都往后移一个位子
int tmp=a[i];
for(int k=i-1; k>=j; --k)
a[k+1]=a[k];
a[j]=tmp;
break;
}
}
}
}