我是拖延人,三天假期拖到最後一天更個部落格,自己真是越來越懶了呢,自打工作以後,休假老是覺得恢復不過來,啥都不想幹,就想躺著,跨年遊戲下回來,沒打幾把感覺精力不足,難道是真的上年紀了嗎(;´д`)ゞ,不想打遊戲就想睡覺,睡了一天下午才洗完澡洗衣服,躺了一會就現在了,真是假期一晃眼就沒了,好在感覺工作的時候也是過的挺快的,就是感覺一直在工作,知識和能力上面提公升幅度卻不大,雖然最近寫的**多了,解決問題能力也有提公升,但是和我預期的還是有些差別,天天寫**,雖然說實踐是檢驗理論的唯一標準,但是沒學好理論來實踐感覺像個無頭蒼蠅,沒有理論指導,就是搬磚實踐。也不扯這麼多了,今天繼續更新一篇簡單的排序演算法——插入排序。( ̄▽ ̄)/
插入排序於我而言,感覺就是一種比較正常的排序邏輯,我個人有一點強迫症,在以前沒有進入無現金社會的時候,手裡面的錢就是乙個簡單的排序,我習慣把錢從小到大依次排序,小錢放裡面,紅色的毛爺爺放在最外面,然後裝起來,個人比較喜歡這樣的,因為有點強迫症。這裡和插入排序有什麼關係呢?假如現在有一堆錢,雜亂無序,如果按照我剛才所說的對錢整理排序,你會怎麼做,我不知道別人是怎麼做的,但是我是一張張拿起來,在手裡進行排序,第一次拿到的不用排序,然後每次拿到亂序堆裡面的錢就放在已經整理好的手上對應的位置——插入,這裡用的整理方法其實就是插入排序了,人們手動的插入排序,除了我個人所使用的這種整理錢的方式(大多數的同學應該都是這樣吧ヽ( ̄▽ ̄)ノ),還有很多常見的地方,比如打撲克的時候,a~k的排序,拿到牌後會將自己擬定的順序從小到大插入的排序,然後再合理的出牌,因為只有排好牌序,才能更好的做出決策(๑>ڡ<)☆。總結一下就是,將亂序的牌不斷的插入已經排好序的序列中,程式演算法使用兩層迴圈來實現排序。
演算法步驟:
從第乙個元素開始,該元素可以認為已經被排序;
取出下乙個元素,在已經排序的元素序列中從後向前掃瞄;
如果該元素(已排序)大於新元素,將該元素移到下一位置;
重複步驟3,直到找到已排序的元素小於或者等於新元素的位置;
將新元素插入到該位置後;
重複步驟2~5
演算法複雜度:
空間複雜度:o(1)
穩定性:穩定
老規矩,懂前端的同學開啟控制台(瀏覽器按f12鍵,現在好像都是f12吧)複製下面**貼上到控制台回車就可以執行看到結果了。(๑′ᴗ‵๑)。
**如下(示例):
function
insertionsort
(arr)
arr[preindex +1]
= curval;
}return arr;
}let ary =[9
,8,7
,4,1
,0,2
,3,6
,5];
console.
log(
insertionsort
(ary)
);
執行結果圖:
歡樂的時光總是如此短暫,可享受並不一定是幸福,人總要有些事情去做,哪怕是極不情願的,沒有事情碌碌無為,從那時起可能便失去了做人該享受的權利,不要因為荒廢時間而在未來去憂愁,也不要在當下去反思過去的頹廢,無論什麼事,先動起來,當你邁出第一步的時候,距離自己的夢想便不再遠已。
—— 2021.1.3 敬現在的自己
今日份勵志名言:
青青園中葵,朝露待日晞。陽春布德澤,萬物生光輝。
常恐秋節至,焜黃華葉衰。
百川東到海,何時復西歸?
少壯不努力,老大徒傷悲。
—— 《長歌行》漢樂府
排序演算法 插入排序
插入排序 insertion sort 的演算法描述是一種簡單直觀的排序演算法。它的工作原理是通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。插入排序在實現上,通常採用in place排序 即只需用到o 1 的額外空間的排序 因而在從後向前掃瞄過程中,需要反覆把已排...
排序演算法 插入排序
排序演算法之插入排序 參照新版程式 下面是錯誤的理解,正確的參考,後文已經修改過的部分。選擇排序,顧名思義,就是選擇乙個元素進行排序。原理 將原始序列分成兩部分,一部分已經有序,一部分無序。將無序中的元素逐個插入到有序序列中。這個也是兩層迴圈,就我個人理解,與氣泡排序是乙個原理。氣泡排序是每次都從無...
排序演算法 插入排序
插入排序簡單來說 就是將乙個資料插入到已經到排好的序列中,但要求插入後仍然有序。這種方法一般適用少量資料的。一 主要的插入排序 直接插入排序 二分插入排序 鍊錶插入排序,希爾排序,是屬於穩定排序的一種。二 直接插入排序 把n個待排序的元素看成為乙個有序表和乙個無序表,開始時有序表中只包含乙個元素,無...