在算法导论中的模板:(升序)
for j=2 to A.length
key = A[j]
i = j - 1
while i>0 and A[i]>key
A[i+1] = A[i]
i = i - 1
A[j+1] = key
然后,在C++里试了下:
#include<iostream>
#include<array>
using namespace std;
void main()
{
int key, j, i;
array<int, 10> a{ 45, 63, 8, 0, 29, 6, 90, 7, 14, 4 };
for (i = 1; i <= 9; ++i)
{
key = a[i];
j = i - 1;
while (j >= 0 && a[j] < key)
{
a[j + 1] = a[j];
j = j - 1;
}
a[j + 1] = key;
}
for (i = 0; i < 10; ++i)
{
cout << a[i] << "->";
}
cout << endl;
}
当然,我这是降序排的。
运行结果: