2015年3月11日 星期三

演算法訓練 6 ─ 插入排序法 (Sorting by Insertion)

http://4rdp.blogspot.com/2015/03/6-sorting-by-insertion.html

圖片引自維基百科
插入排序法像一疊覆蓋的撲克牌在桌上,一張張取出來,然後插到手上牌組依序排好,不像選擇排序法已經攤牌在桌上可以找特定的牌張。

現在將一隨機排序的陣列 (1 ~ 100),以此方法由小到大排列

這裡所出的題目,不限制程式語言,甚至以純文字表述也歡迎,就算有人已經以某種語言發表答案,也歡迎你用更精簡方式或是其它程式語言再重製,一個好的程式,應同時注重程式碼大小、占用記憶體資源與執行效率。在此貼出的程式碼,著作權除非另有聲明,否則屬貼文者的,其內容純研究討論供大眾參考,也不負任何使用損壞賠償責任。

10 則留言:

  1. Bridan,你好:

    是否能請您推薦兩三本演算法相關的中文書籍,給高中生瞭解一下。謝謝!

    探奇 邱信仁

    回覆刪除
    回覆
    1. 邱老師您好,

      推薦演算法相關書,去年有看兩本不錯的書,
      第一本,改變世界的九大演算法 http://4rdp.blogspot.tw/2014/11/algorithms-that-changed-future.html,
      雖然書中沒有程式範例,但是有淺顯易懂的圖例說明,可以幫程式設計打下內功。
      第二本,演算法統治世界 http://4rdp.blogspot.tw/2014/12/automate-this.html
      這本書則是以社會演進觀點來看,可以尋找程式應用的領域。

      刪除
    2. 感謝Bridan的推薦,我也有看到您的介紹文章。
      除了這些,具有程式範例的推薦書籍呢?C語言可以配合Arduino等使用。

      探奇 邱信仁

      刪除
    3. 邱老師您好,

      我的舊書,多是配在某種程式語言中某部分章節,沒有集結成冊的,而且絕版,這也為什麼我會在部落格開這系列文章整理集結的原因。
      如果推薦有程式例的新書,可以參考下列幾本,這些個人還未翻閱過,
      C 語言演算法徹底入門,http://www.tenlong.com.tw/items/9575274415?item_id=10257
      打下好基礎:程式設計與演算法競賽入門經典,http://www.books.com.tw/products/0010650143
      其實個人學習演算法,是取其中精神,如本題目所述,使用這種情境方法時,並能用自己熟悉的程式語言寫出來,那就學會這個算法了。

      刪除
    4. 謝謝您的推薦,我會好好努力學習!^^
      敬祝 平安喜樂

      刪除
    5. 邱老師,

      教學相長,從你部落格文章,我也收穫良多,不知你有在玩 Arduino 以及 MeArm 嗎?如果有,請告訴我你使用的板子為何?例如 UNO 或其它,過一陣子,我將贈送一個東西,請你當全球首批試用者!屆時麻煩你回饋心得與推薦,謝謝。

      刪除
    6. Bridan大,
      目前正在嘗試Makeblock的mBlock,手邊有一台Makeblock Starter kit,是UNO相容版。
      預定還要瞭解mBot套件,進行實測及教學計劃。
      MeArm只聞其名。
      如有榮幸非常樂意成為您的精心傑作首試,感謝!

      刪除
    7. 邱老師您好,

      其實我正在開發一個機器人作業系統,目前以一般 Arduino 硬體試作,先以 SG90 伺服馬達為主要控制馬達,並未考量搭配 mBlock 及 mBot 之類硬體。沒關係,我再想辦法讓你可以實體測試它。因為近日工作繁忙,只能盡量回家後抽空設計,希望四月底前可以提供,敬請期待。

      刪除
    8. 我會有一塊UNO相容板,可以購買SG90測試。期待您的大作。

      刪除
    9. 好,我將陸陸續續把一些文件在部落格公告。

      刪除