最近買了一本演算法導論的書籍,同學念研究生就是用的這本書,其實這些演算法資料結構直接就該弄完的,都工作四年了,只是知道一點說來慚愧,不懂演算法的程式設計師不是好的程式設計師。演算法導論剛開,從前往後看的,第一章的插入法看書的圖還是看的不明白容易產生誤導,於是自己寫了**才更加的理解了。
一是看書的文字描述比較枯燥,二是看書上的圖感覺不對勁兒,也是自己理解有限。
這是書中的原圖:
關於從上圖中(d)開始我自我感覺這畫的不好,下面是我自己做的更加容易理解插入演算法的圖
也就是遍歷,從索引1的位置開始,每次遍歷的item作為key來進行對比作為遍歷的條件。背景色為粉色的項為每次遍歷要走的key,外面的大遍歷是整個陣列的長度,而裡面的小迴圈實際是key的index倒序的遍歷。那麼每次遍歷自我感覺可以是把每次要遍歷的項指向了key,通過與key的比較確定每一項的位置。每次對比如果沒有打錯號就是可以對比並且符合對比後不是key項的將要像右移動一位。如果沒有對比那麼就是保持位置不動即可。
**演示c#:
這樣感覺起來更容易理解一下,不明白的時候找**除錯一下就豁然開朗。
人在做,天在看。認真做好自己,工作時候就是工作什麼時候幹什麼事情。
插入排序法
插入排序原理很簡單,講一組資料分成兩組,我分別將其稱為有序組與待插入組。每次從待插入組中取出乙個元素,與有序組的元素進行比較,並找到合適的位置,將該元素插到有序組當中。就這樣,每次插入乙個元素,有序組增加,待插入組減少。直到待插入組元素個數為0。當然,插入過程中涉及到了元素的移動。為了排序方便,我們...
插入排序法
插入排序法 按照比較和插入來實現的。在待排序的元素中,假設前面n 1 其中n 2 個數已經是排好順序的,現將第n個數插到前面已經排好的序列中,然後找到合適自己的位置,使得插入第n個數的這個序列也是排好順序的。按照此法對所有元素進行插入,直到整個序列排為有序的過程,稱為插入排序。類似於打牌的過程中,從...
插入排序法
這個應該是最基礎的演算法了,一直懶得寫,今天搞一下。其實就是先把大的牌往右邊移動,然後再把當前牌插入到前面即可,需要注意的是,不要用在陣列連續賦值,很容易出錯。還是老實點好。define crt secure no warnings include include include include t...