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

苦于學(xué)了忘,忘了學(xué),部門大佬給機(jī)會(huì)周會(huì)每周一道算法題開闊思維,那我只能從最基礎(chǔ)的學(xué)起來了。該系列一邊學(xué)碼UML加深印象記住簡單的算法邏輯,一邊回顧算法。。。反正就隨便記隨便看吧。有時(shí)候會(huì)總結(jié)一下部門出的題也發(fā)上來


UML練習(xí)
InsertSort.png
UMLCODE
@startuml
start
:InsertSort.directInsert(int[] before);
note right
    直接插入,輸入亂序數(shù)組{2,1,8,5,4}
    左小右大算法
end note
while (int i=1;i<before.length?) is (true)
note right
    外層循環(huán),哨兵會(huì)從{1->8->5->4}
    一個(gè)個(gè)跟前面的對(duì)比大?。▋?nèi)層循環(huán))
    所以會(huì)循環(huán)n-1次(4)
end note
   :int k=i-1;
note right
    設(shè)置哨兵預(yù)備插入的位置
    當(dāng)前監(jiān)控值所在位置-1
    作用域問題,不用j
end note
   :int temp=before[i];
   note right
       臨時(shí)存儲(chǔ)
       當(dāng)前監(jiān)控值
       (第一次循環(huán) 拿1(before[1]))
   end note
  while (int j=k;j>=0&&before[j]>temp) is (true)
  note right
      內(nèi)層循環(huán),一旦哨兵監(jiān)控的位置(j)
      下標(biāo)滿足正常的>=0
      且 監(jiān)控值(位置后)比(監(jiān)控位置)小
      需要移位 (temp 1|2 2 8 5 4)
      再次對(duì)比,不滿足條件,那就插入Index
      為0的地方吧。但是已經(jīng)j--
      k-- 所以在外面監(jiān)控位置回退
      //其實(shí)就是整個(gè)循環(huán)
      保障所有大于監(jiān)控值的值往后移動(dòng)

  end note
    :before[j+1]=before[j];
    :j--;
    :k--;
  endwhile (false)
  :before[k+1]=temp;
  note right
  不滿足條件
  (k變成-1或者
  已經(jīng)不滿足before[j])
  監(jiān)控位置回退

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

stop
@enduml
直接排序CODE
//默寫實(shí)現(xiàn)
    public static int[] insertSort2(int [] before){

        for(int i=1;i<before.length;i++){
            int temp=before[i];//哨兵值
            int k=i-1;//哨兵準(zhǔn)備插入的前一個(gè)位置  預(yù)判
            //判斷哨兵和前一個(gè)位置
            for(int j=k;j>=0&&before[j]>temp;j--){
                before[j+1]=before[j];//哨兵保存著最后的值 相對(duì)的后面的值有兩個(gè) 所以不怕前面的再覆蓋 最后再
                k--;//記錄哨兵監(jiān)控位置
            }
            //最后監(jiān)控的k--的部分不滿足before[k]>temp 或者k<0 所以這個(gè)時(shí)候k+回1
            before[k+1]=temp;
        }

        /**
         *          | 2 1 9 10 5
         *        -----------
         *        1 | 2|2     哨兵1 對(duì)比小于2  2 后移
         *      (1 | -1-|2) ->繼續(xù)判斷 k=-1不合理 哨兵歸位 k=0 插入哨兵
         *        9 | 1 2|-9-
         *       10 | 1 2 9|-10-   不滿足哨兵小于監(jiān)控處  哨兵歸位
         *       5  | 1 2 9 10| 10  滿足哨兵小于監(jiān)控處  哨兵往前,for(滿足)哨兵往前   直至
         *     (5  | 1 2 9 9| 10)
         *     (5  | 1 2 -5- 9 |10) -> k=2合理但是不滿足哨兵小于監(jiān)控位置(2) 歸位  插入
         *
         *
         */
        return before;
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Happy birthday to myself。 古語有云:“三十而立”,我這也算是立了吧,工作還行,收入...
    微初塵閱讀 609評(píng)論 0 3
  • 女人是一尾魚 水是它的天空,在近似神秘的柔波里,她悠悠的美是一種神話,干凈而剔透,她時(shí)常暢游在自己的海洋里,潔身...
    詩緣文字書法部落閱讀 849評(píng)論 0 0
  • ##文章標(biāo)題 1、啊啊啊 2、啊啊啊 >是什么呢?。?-無需 -無需
    廈門梁朝偉閱讀 163評(píng)論 0 0

友情鏈接更多精彩內(nèi)容