aladdin_leon 发表于 2013-1-27 06:23:49

排序的故事---插入排序

     说起插入排序,其实它的工作原理十分简单,举例来说一下,按照从小到大顺序排列下面的一组数:
                           9   5   7   3   4
     从第二个数起,把它之后的部分看成是未排列的部分,第一个元素是已排序的部分,然后依次把未排序的部分的第一个元素取出,插入到已排好的部分的正确位置,于是已排好部分的元素个数加一,未排好部分元素个数减一。一直到未排好部分元素的个数为零时结束。于是上述的例子的排序过程如下:
                           9   5   7   3   4
                           5   9   7   3   4
                           5   7   9   3   4
                           3   5   7   9   4
                           3   4   5   7   9
     在一些传统的教科书里面中一般这样来作插入工作:如果要把X从X插入到X这一个已经排好的段落之中,令X与X,X,...,X,X相比较,如果X>=X(0<=j<=i-1),就把X向后移一位,直到X小于X,X就放在X处。C语言的代码如下:
<div class="dp-highlighter"><div class="bar">   
[*]void sort(int input[], int n)      
[*]{      
[*]         int current;      
[*]         int x;      
[*]         int i;      
[*]         for(current=1; current   
[*]         {      
[*]              x = input;      
[*]              i = current - 1;      
[*]              while(x=0)      
[*]              {      
[*]                 input = input;      
[*]                 i--;      
[*]              }      
[*]              input = x;      
[*]         }      
[*]}  
页: [1]
查看完整版本: 排序的故事---插入排序