插入排序

来源:互联网 发布:sas软件个人购买价格 编辑:程序博客网 时间:2024/04/29 09:04

此算法就好比我们玩纸牌。整理手牌一样。

开始摸牌时,我们左手是空的,牌面下放在桌子上。接着从桌上摸一张牌。

并将它插入到左手中的正确位置中。要将它插入到正确的位置,就要将它从左至右进行比较。所以左手中的牌都是排好序的。

适合数量较少的排序。。。

 

#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" );    }}