zoukankan      html  css  js  c++  java
  • 排序算法------插入排序

    为了方便大家理解,我尽量写的浅显易懂,同时希望大家把不理解的发到评论中,我会尽所能,帮助你l理解。

    欢迎qq进行交流问题:

          本人QQ :1770115451             算法交流群: 1061907071

    插入排序算法:
        总体思路:可以把插入排序算法的过程想象成摸牌,从最底向上摸牌,摸到的牌与手里的牌 进行比较(与手里的牌中最后一张向前依次比较),如果摸到的牌,小于比较的牌,则插入到前面去,反
    之,放在后面去。

    算法实现步骤:

      1. 建立一个循环,实现从底向上摸牌的过程。

      2.记录手里的牌中最后位置待比较牌的位置。

      3.获取摸到的新牌

      4.创建一个while循环,当有手牌时并且新手牌小于 待比较牌 ,则进行更新带比较牌的位置

      5.当没有手牌的时候,或者摸到的手牌大于待比较牌时,则将新手牌放在带比较牌位置的后面。

    关键代码:

        //插入排序算法
        public static void  insertSort (int arr[]){
            //1.从底向上摸牌
            for(int i=0;i<arr.length;i++){
                //2.记录手里的牌中最后的那个牌的位置,如果等于-1的话,说明是第一次摸牌,还没有手牌
                int  lastIndex  = i-1; 
                //3.获取摸到的牌
                int N =arr[i];
                //4.当有手牌     并且     摸到的新手牌<手牌中最后位置那张牌,则放到前面去
                while(lastIndex>-1&&N<arr[lastIndex]){
                    arr[lastIndex+1] = arr[lastIndex]; //把最后位置的牌向后挪一个位置
                    lastIndex--;                        //更新最后一张待比较的牌的位置
                }
                //5.当没有手牌,且 摸到的新手牌大于 最后一张待比较的牌时 :直接放到后面去
                arr[lastIndex+1] =  N;
            }
            printarr(arr);
        }
  • 相关阅读:
    Cobar-Client 实现策略总结
    xsltproc docbook 转 html
    一个使用高并发高线程数 Server 使用异步数据库客户端造成的超时问题
    Hessian 初探
    关于 tomcat nio connector, servlet 3.0 async, spring mvc async 的关系
    Two-Phase Commit (两阶段提交)
    HashedWheelTimer 原理
    Photoshop 使用曲线
    Photoshop 使用可选颜色
    MySQL Batch 与 Transaction
  • 原文地址:https://www.cnblogs.com/songchengyu/p/12925797.html
Copyright © 2011-2022 走看看