排序算法------插入排序

为了方便大家理解,我尽量写的浅显易懂,同时希望大家把不理解的发到评论中,我会尽所能,帮助你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);
    }
原文地址:https://www.cnblogs.com/songchengyu/p/12925797.html