知識點9 常見的排序演算法 插入排序

2021-09-30 14:31:46 字數 914 閱讀 2104

我們在打撲克的時候,有沒有在拿到牌後都重新整理一遍,方便自己打牌和出牌?我想會有吧。那麼你們整理牌的方式是什麼樣的呢?我想應該都是把大的牌一張一張的往左邊挪,直到所有的牌都從大到小排列吧。是的不管你們是不是這樣,反正我的是這樣~~。那麼,你們比較大小的方式是什麼呢?有人可能就說:那肯定是看牌在哪兩個數字之間,直接插入進去,如果是最大的,就放左邊啊。如果是這樣,恭喜你,初步掌握了插入排序的基礎。為什麼是初步,而又是基礎呢?這是因為你這還不是插入排序的思路,只是接近了而已。那麼,什麼才是插入排序的思路呢?別急,好戲後頭,我們一起來揭曉吧!

好,插入排序法的整牌方式還有1分鐘到達戰場。

你已獲得一副好牌,請從小到大進行整理(就喜歡不按常理整牌):

首先,把整理牌的過程看作乙個迴圈,你有n張牌,就迴圈n-1遍。起步是第1張牌,終點是第n-1張牌

其次,假設你目前第n張牌,那麼以第n張牌為範圍,再進行一次迴圈。起點是n,終點是0

然後,我們以第n張牌進行比較,如果arr[1]小於arr[0],那麼我們交換兩者,然後從n-1起步,與n-2進行比較。直到arr[n-1]大於 arr[n-2],則推出迴圈,此時已經成排序

最後,沒了~

看不懂,不怕,帶著描述看**最容易讓人懂了

void insertsort(int arr)

}else}}

}

好了,看到這裡,乙個簡單的思路實現就已經結束了。不知道大家對照著**和前面的思路能不能對插入排序有所理解呢?如果沒有,請多看幾遍,建議畫一下每一步的流程圖來方便理解。

當然,以上**還可以再次優化的,只是優化的地方在於美觀。我們發現,我們在迴圈裡面又用了一次的判斷,但這個判斷的實際意義不大,因此我們把他簡化一下~

void insertsort(int arr)}}

}

知識點五 插入排序

知識點 插入排序 1 插入排序的基本思想是 每步將乙個待排序的記錄,按其關鍵碼值的大小插入前面已經排序的檔案中適當位置上,直到全部插入完為止。2 演算法適用於少量資料的 排序,時間複雜度 為o n 2 穩定的排序方法 題目分析 普通輸入一串數字,進行排序 題解 acm1.cpp 定義控制台應用程式的...

常見排序演算法 插入排序

插入排序 insertion sort 的基本思想是 每次將乙個待排序的記錄,按其關鍵字大小插入到前面已經排好序的子檔案中的適當位置,直到全部記錄插入完成為止。本節介紹兩種插入排序方法 直接插入排序和希爾排序。直接插入排序基本思想 1 基本思想 假設待排序的記錄存放在陣列r 1.n 中。初始時,r ...

常見的排序演算法 插入排序

排序 所謂排序,就是使一串記錄,按照其中的某個或某些關鍵字的大小,遞增或遞減的排列起來的操作。穩定性 假定在待排序的記錄序列中,存在多個具有相同的關鍵字的記錄,若經過排序,這些記錄的相對次序保持不變,即在原序列中,r i r j 且r i 在r j 之前,而在排序後的序列中,r i 仍在r j 之前...