zoukankan      html  css  js  c++  java
  • [排序] 插入排序

    插入排序,好比是洗扑克一样,我们将牌分作两堆,每次从后面一堆的牌抽出最前端的牌,然后插入前面一堆牌的适当位置,例如:
    排序前: [92], 77, 67, 8, 6, 84, 55, 85, 43, 67  -- 将数组分为两部分,第一个元素为一组
    第 1 次排序:[77 92] 67 8 6 84 55 85 43 67     -- 将后一组的第一个元素 77 插入前一组的适当位置
    第 2 次排序:[67 77 92] 8 6 84 55 85 43 67     -- 将后一组的第一个元素 67 插入前一组的适当位置
    第 3 次排序:[8 67 77 92] 6 84 55 85 43 67     -- 将后一组的第一个元素 8 插入前一组的适当位置 
    第 4 次排序:[6 8 67 77 92 84] 55 85 43 67      -- 将后一组的第一个元素 6 插入前一组的适当位置
    第 5 次排序:[6 8 67 77 84 92 55] 85 43 67      -- 将后一组的第一个元素 84 插入前一组的适当位置
    第 6 次排序:[6 8 55 67 77 84 92 85] 43 67      -- 将后一组的第一个元素 55 插入前一组的适当位置
    第 7 次排序:[6 8 55 67 77 84 85 92 43] 67      -- 将后一组的第一个元素 85 插入前一组的适当位置
    第 8 次排序:[6 8 43 55 67 77 84 85 92] 67      -- 将后一组的第一个元素 43 插入前一组的适当位置
    第 9 次排序:[6 8 43 55 67 67 77 84 85 92]      -- 将后一组的第一个元素 67 插入前一组的适当位置

    Java代码实现,如下:

    /**  
      * 插入排序
      *   @param   data:等代排序整型数组
      *     data = { 92, 77, 67, 8, 6, 84, 55, 85, 43, 67 }
      *     排序结果:
      *        第 1 次排序:77 92 67 8 6 84 55 85 43 67 
      *        第 2 次排序:67 77 92 8 6 84 55 85 43 67 
      *        第 3 次排序:8 67 77 92 6 84 55 85 43 67 
      *        第 4 次排序:6 8 67 77 92 84 55 85 43 67 
      *        第 5 次排序:6 8 67 77 84 92 55 85 43 67 
      *        第 6 次排序:6 8 55 67 77 84 92 85 43 67 
      *        第 7 次排序:6 8 55 67 77 84 85 92 43 67 
      *        第 8 次排序:6 8 43 55 67 77 84 85 92 67 
      *        第 9 次排序:6 8 43 55 67 67 77 84 85 92 
      */  
     public   void  insertSort( int  data[])  {
             int  k, temp, max  =  data.length;
    
             for  ( int  i  =   1 ; i  <  max; i ++ )  {
                temp  =  data[i];  //  后一组的第一个元素 
                 k  =  i  -   1 ;  //  从前一组的最后一个元素开始比较 
                  while  (temp  <  data[k])  {
                    data[k  +   1 ]  =  data[k];  //  如果前一组元素大于后一组第一个元素,则后移 
                     k -- ;
                     if  (k  ==   - 1 )
                         break ;  //  如果前一组元素比较完,则跳出 
                 } 
                data[k  +   1 ]  =  temp;  //  插入适当的位置 
     
                System.out.print( "  第   "   +  i  +   "   次排序:  " );
                 for  ( int  j  =   0 ; j  <=  max  -   1 ; j ++ )  {
                    System.out.print(data[j]  +   "     " );
                } 
                System.out.println();
            } 
        }
  • 相关阅读:
    filter : progid:DXImageTransform.Microsoft.AlphaImageLoader ( enabled=bEnabled , sizingMethod=sSize , src=sURL )
    dhtmlxgrid表格笔记
    oracle sql insert插入字符&
    java之map遍历
    oracle之按表名查询表字段结构
    oracle之nvl,nvl2,decode
    oracle之case
    java定时案例
    oracle查询表指定字段类型
    pl/sql test Window 参数为date
  • 原文地址:https://www.cnblogs.com/cRaZy-TyKeIo/p/3626046.html
Copyright © 2011-2022 走看看