排序算法之插入排序

来源:互联网 发布:c语言中 ||是什么意思 编辑:程序博客网 时间:2024/06/17 22:39

插入排序

思想:插入排序的思想是先假定a[0]已经排好,然后从a[1]~a[size-1]依次往里面插入。在插入过程中还要倒着插,这样比较省事。如果插入的数比要比较的数大,则放在右边;反之,放在左边。另外,按照上述思路,可能会出现多次调换的情况,处理的办法是先将比较之后要移动的数都往后面移动一位,最后再将要插入的数插入都移动之后出现的空档。这个处理很巧妙,也是插入排序的精华所在!


//给定数组直接插入排序,从小到大排列。

 

#include <stdio.h>

 

int main()

{

         inti,j=1,t1,t2,s;

         inta[10]={1,23,41,31,45,767,48,90,6,88};

 

         for(j= 1;j < 10;j++)

         {

       t1=a[j];

       i = j;

       while(i > 0 && t1 < a[i-1])   //这里的while改成if就不对了

                   {

          a[i] = a[i-1];   //这两步非常高明,直接将符合要求的都往后面移动

           i--;          //而且往后面移动时,不能将a[i-1]赋值给t1,那样太麻烦

       }               //直接移动a[i]和a[i-1],这才是高明的地方

       a[i] = t1;   //移动完之后会空出a[i],此时再将t1填充进去

         }

 

         printf("\nThesorted numbers are:\n");

         for(i=0;i<10;i++)

         {       

                   printf("%5d",a[i]);

         }

         printf("\n\nend\n");

}

原创粉丝点击