關於陣列的插入排序,我們需要先對for迴圈有乙個更加透徹的認識,我們需要很清楚的知道for迴圈結束的時候,i的取值是多少。如下面圖例:
如圖中,在第乙個迴圈結束的時候,迴圈經過了5次,第五次結束的時候,i的值也經過了5次 i++ ;變成了5 ,不再滿足i < 5 的條件,結束迴圈,第二個迴圈也是如此。
下面進入正題,關於插入排序,顧名思義,就是我們把陣列分為兩部分,將後免得部分的第乙個數字逐一和前面的部分的每乙個數字比較,然後在對的位置插入。
插入排序舉例:的排序過程如下所示:
第 1 步,假設第乙個元素是已排序的
第 2 步,用 2 和"|「之前的所有元素比較,並插入
取出 2(temp=2)
temp 和 8 比,比 8 小,將 2 的位置賦值為大數(ary[1]=8)
因為已到邊界,直接賦值(ary[0]=2)
2 和 8 排序完成
第 3 步,用 3 和」|「之前的所有元素比較,並插入
取出 3(temp=3)
temp 和 8 比,比 8 小,3 的位置賦值給大數(ary[2]=8)
temp 和 2 比,比 2 大,插入 2 後面 (ary[1]=3)
3、2、8 排序完成
第 4 步,用 7 和」|「之前的所以元素比較,並插入
取出 7(temp=7)
temp 和 8 比,比 8 小,7 的位置賦值給大數(ary[3]=8)
temp 和 3 比,比 3 大,插入 3 後面(ary[2]=7)
7、2、3、8 排序完成
第 5 步,用 1 和」|"之前的所以元素比較,並插入
取出 1(temp=1)
temp 和 8 比,比 8 小,1 的位置賦值給大數 8
temp 和 7 比,比 7 小,8 的位置賦值給大數 7
temp 和 3 比,比 3 小,7 的位置賦值給大數 3
temp 和 2 比,比 2 小,3 的位置賦值給大數 2
到邊界,賦值(ary[0]=1)
1、2、3、7、8 排序完成 。
可以用圖表示為:
在這其中:
• temp 代表取出待插入的元素
• i 代表後組待插入元素的位置
• j 代表前組每個元素的位置
• i 的取值範圍是: i=1 ~ =0, j–
關於插入排序的個人筆記
一 插入排序 定義 在乙個有序的資料序列中,新插入乙個資料,使得插入後的資料序列依舊保持有序,插入排序就是其中一種演算法,插入排序的基本操作就是將乙個新的資料插入到已經完成排序的有序資料中,從而得到乙個新的有序資料。偽 insertion sort a 1.for i 2 to a.length 2...
關於插入排序
下午開始看演算法導論 涉及一比較簡單的插入排序 輸入 n個數 輸出 輸入序列的乙個排序 重新排序 a 1 a 2 a n 書上的演算法如下 1 for j 2 to length a 2 do key a j 3 i j 1 4 while i 0 and a i key 5 do a i 1 a ...
排序學習筆記 1 插入排序
學習排序,參考 測試程式 表示一下感謝 1.插入排序 1 直接插入排序 穩定排序,效能 o n 2 2 二分查詢插入 折半插入排序 這個演算法也是非常被大眾使用的,折半 二分已經深入人心了。不過它的資料後移卻給這個演算法拖了後腿。不過沒關係,我們能夠從中得到解決問題的思想 折半!穩定排序,效能 o ...