八大排序入门之直接插入排序O(n^2)

苦于学了忘,忘了学,部门大佬给机会周会每周一道算法题开阔思维,那我只能从最基础的学起来了。该系列一边学码UML加深印象记住简单的算法逻辑,一边回顾算法。。。反正就随便记随便看吧。有时候会总结一下部门出的题也发上来


UML练习
InsertSort.png
UMLCODE
@startuml
start
:InsertSort.directInsert(int[] before);
note right
    直接插入,输入乱序数组{2,1,8,5,4}
    左小右大算法
end note
while (int i=1;i<before.length?) is (true)
note right
    外层循环,哨兵会从{1->8->5->4}
    一个个跟前面的对比大小(内层循环)
    所以会循环n-1次(4)
end note
   :int k=i-1;
note right
    设置哨兵预备插入的位置
    当前监控值所在位置-1
    作用域问题,不用j
end note
   :int temp=before[i];
   note right
       临时存储
       当前监控值
       (第一次循环 拿1(before[1]))
   end note
  while (int j=k;j>=0&&before[j]>temp) is (true)
  note right
      内层循环,一旦哨兵监控的位置(j)
      下标满足正常的>=0
      且 监控值(位置后)比(监控位置)小
      需要移位 (temp 1|2 2 8 5 4)
      再次对比,不满足条件,那就插入Index
      为0的地方吧。但是已经j--
      k-- 所以在外面监控位置回退
      //其实就是整个循环
      保障所有大于监控值的值往后移动

  end note
    :before[j+1]=before[j];
    :j--;
    :k--;
  endwhile (false)
  :before[k+1]=temp;
  note right
  不满足条件
  (k变成-1或者
  已经不满足before[j])
  监控位置回退

  end note
  :i++;
endwhile (false)
:return before[];

stop
@enduml
直接排序CODE
//默写实现
    public static int[] insertSort2(int [] before){

        for(int i=1;i<before.length;i++){
            int temp=before[i];//哨兵值
            int k=i-1;//哨兵准备插入的前一个位置  预判
            //判断哨兵和前一个位置
            for(int j=k;j>=0&&before[j]>temp;j--){
                before[j+1]=before[j];//哨兵保存着最后的值 相对的后面的值有两个 所以不怕前面的再覆盖 最后再
                k--;//记录哨兵监控位置
            }
            //最后监控的k--的部分不满足before[k]>temp 或者k<0 所以这个时候k+回1
            before[k+1]=temp;
        }

        /**
         *          | 2 1 9 10 5
         *        -----------
         *        1 | 2|2     哨兵1 对比小于2  2 后移
         *      (1 | -1-|2) ->继续判断 k=-1不合理 哨兵归位 k=0 插入哨兵
         *        9 | 1 2|-9-
         *       10 | 1 2 9|-10-   不满足哨兵小于监控处  哨兵归位
         *       5  | 1 2 9 10| 10  满足哨兵小于监控处  哨兵往前,for(满足)哨兵往前   直至
         *     (5  | 1 2 9 9| 10)
         *     (5  | 1 2 -5- 9 |10) -> k=2合理但是不满足哨兵小于监控位置(2) 归位  插入
         *
         *
         */
        return before;
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,172评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,346评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,788评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,299评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,409评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,467评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,476评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,262评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,699评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,994评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,167评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,827评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,499评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,149评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,387评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,028评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,055评论 2 352

推荐阅读更多精彩内容

  • Happy birthday to myself。 古语有云:“三十而立”,我这也算是立了吧,工作还行,收入...
    微初尘阅读 544评论 0 3
  • 女人是一尾鱼 水是它的天空,在近似神秘的柔波里,她悠悠的美是一种神话,干净而剔透,她时常畅游在自己的海洋里,洁身...
    诗缘文字书法部落阅读 652评论 0 0
  • ##文章标题 1、啊啊啊 2、啊啊啊 >是什么呢啊? -无需 -无需
    厦门梁朝伟阅读 122评论 0 0