此算法就好比我们玩纸牌。整理手牌一样。
开始摸牌时,我们左手是空的,牌面下放在桌子上。接着从桌上摸一张牌。
并将它插入到左手中的正确位置中。要将它插入到正确的位置,就要将它从左至右进行比较。所以左手中的牌都是排好序的。
适合数量较少的排序。。。
#include <stdio.h>
#include <string.h>
int main ( ) {
int n, a[100];
while ( scanf ( "%d", &n ) != EOF ) {
memset ( a, 0, sizeof ( a ) );
int i, key, j;
for ( i = 1; i <= n; ++i ) //注意从1开始的
scanf ( "%d", &a[i] );
for ( j = 2; j <= n; ++j ) {
key = a[j];
i = j - 1;
while ( i > 0 && a[i] > key ) {
a[i + 1] = a[i];
i = i - 1;
}
a[i + 1] = key;
}
for ( i = 1; i <= n; ++i )
printf ( "%d ", a[i] );
printf ( "\n" );
}
}