首先什麼是插入排序,個人理解就是拿佇列中的乙個元素與其之前的元素一一做比較交根據大小換位置的過程好了我們先來看看**
首先就是乙個無序的列表先列印它好讓排序後有對比效果,然後我後面注釋工作流程,下面我來一一說明下其執行流程,開始先宣告乙個插入排序的函式名insert_sort,要傳入的引數為lis,count來獲取列表lis長度len(lis),然後我們要開始寫迴圈對比for i in range(從1到列表長度count)然後把列表下標為一位置的數也就是28(lis下標預設是從0開始然後才是1,2,3,...)j用來取i的前面乙個位子i-1等於0,這用遞減的方式來比對,j=0進入迴圈,判斷lis[0]也就是85 大於 28,也就是前面的數只要比後面的數字大就交換位置,這裡就lis[0+1]也就是lis[1]28 被lis[0]85給賦值了(可以簡單理解為a=1,b=0 if a>b a,b=b,a等同於a=0,b=1),j: 0-1=-1迴圈結束,當然如果還是不清楚改變如下**
首先你要注釋#號**,然後在迴圈結束列印出每次迴圈玩的結果就可以看得很清楚,這裡可以清楚看到每一次迴圈完成都會改變前面幾個數字的順序(尤其注意看11的位置改變),其實也就是每次拿k去一次和前面的值比較,只要比k大位置就交換。在直接的就是與前面的數對比,只要它比你大就換位置。打個比方你買車,看了很多種,一去了解發現好多東西要配,貨比三家的去問發現這第二家折扣大,你想買的慾望增加,就會把第一家想買的排在後面,優先第二家,結果第三家一站式服務全部跟你配齊,折扣也不錯,這時候你心裡會比較三家最想去的一家向前排,不好的就仍後面有個順序1,2,3。
感謝收看,下次再見。
排序演算法之一插入排序
每次將乙個待排序的記錄,按其關鍵字大小,插入到前面已經排好序的子串行中的適當位置,直到全部記錄插入完成為止。根據尋找插入位置方法分為 基本思想 當插入第i i 1 個物件時,前面的v 0 v 1 v i 1 已經排好序。這時,用v i 的排序碼與v i 1 v i 2 v 0 的排序碼順序進行比較,...
排序(一)插入排序
繼插入排序 這裡說一下折半插入排序。從前面的迴圈中可以看出直接插入排序是邊比較邊移動的。這裡講的折半插入排序則是將比較和移動分開。不斷的折半查詢定位再一次性的移動元素,最終插入元素 void insertsort int a,int n else 中間元素小於要插入的元素,則在後半部分 for j ...
排序演算法(一) 插入排序
首先,對排序演算法 輸入 n 個數 輸出 序列的乙個排序,使得a1 a2 an 待排序的數為key 插入排序演算法,是乙個對少量元素進行排序的有效演算法.其偽 如圖 插入排序演算法在形式上類似於我們平時打牌時,邊抽牌邊整理撲克牌的順序,我們將新的牌與手中已經整理好順序的撲克牌進行比較,最終將抽到的牌...