算法導論

算法,一直是我想去大公司路上的一塊絆腳石,總覺得平時用不到,但是考試總要考,不管是否能用到,學習總歸是好事,前不久買了本《算法導論》接下來的日子,我會把自己看到的關(guān)于算法東西寫出來,用羅胖的話就是,讀書是一件苦事,死磕自己,娛樂大家。

一、插入排序

先上偽代碼:

INSERTION-SORT(A)

1.for j=2 to A.length

2. ? key = A[j]

3. ? //Insert A[j] into the sorted sequence A[1..j-1]

4. ? i = j - 1

5. ? while i > 0 and A[i] > key

6. ? ? ? A[i+1] = A[i]

7. ? ? ? i = i -1

8. ? ? A[i+1] = key

聽名字就容易理解,“插入”就像排隊一樣,最起碼你前面有一個人,你插隊插在他前面,才叫插入。因此,for循環(huán)就從j=2(本文是根據(jù)讀《算法導論》編寫,因此下標統(tǒng)一從1開始),也就是第二個數(shù)開始。排序肯定涉及到交換,交換肯定涉及到中間變量,第二行key就是這個中間變量。從隊尾的前一個開始比較,因此第四行:i = j - 1,交換的條件要滿足不能超過數(shù)組的一個,而且待排序的數(shù)要比前面的值大才能交換。接下來就是插入排序的精髓:尾部和倒數(shù)第二個交換后,之前的尾部(也就是現(xiàn)在的倒數(shù)第二個數(shù))還是待排序(此時表示排序完成),因此它要和倒數(shù)第三個數(shù)進行比較,這時的待比較的下標就變?yōu)閕 = i-1,第7行和第8行應該可以換位置,只不過如果換位置A[i+1] = key就要變?yōu)锳[i] = key.

ok,這就是插入排序了,過程就像打撲克的起牌過程,手里的牌由少變多,依次插入。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容

  • 概述 排序有內(nèi)部排序和外部排序,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進行排序,而外部排序是因排序的數(shù)據(jù)很大,一次不能容納全部...
    蟻前閱讀 5,215評論 0 52
  • 概述:排序有內(nèi)部排序和外部排序,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進行排序,而外部排序是因排序的數(shù)據(jù)很大,一次不能容納全部...
    每天刷兩次牙閱讀 3,742評論 0 15
  • 1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 將一個記錄插入到已排序好...
    依依玖玥閱讀 1,271評論 0 2
  • 奚夢瑤摔跤這個熱點沸沸揚揚了兩三天,熱度依然不減。 隨便打開什么瀏覽器,下面的新聞推送里,十篇中必定有至少一篇是在...
    一襲話夢閱讀 235評論 0 1
  • 我代大冰來看你 ————百城百校音樂會商院站 作家有很多,野生作家只有一個。寫書的人很多,大冰只有一個。他沒有粉絲...
    兮沐沐閱讀 564評論 0 1