一種增量式的做法
在處理少量資料元素進行排序的有效演算法。
**由內外兩層for迴圈構成,內迴圈做比較,外迴圈控制哪個是插入值。
排序引數是乙個陣列 a [1…n]。(包含n個待排序數)
a [ j ] 先放入key變數中。
將陣列邏輯劃分為「手牌區」a [1…j-1],「」key區域=a[ j ] 」 和「待插入區」a [j+1…n](開始時手牌區為1)
key依次從右至左依次與手牌區比較,被比較手牌區值大則向右移動,key再與左邊下乙個手牌值比較,直到被比較手牌小於key,key插入此值右邊位置。
eg:a [5,2,4,6,1,3]
第一次插入,5在手牌區,2(key) 與手牌區5作比較,5向後移動。
第二次插入,(2,5)在手牌區,4(key)在內迴圈中先於5比較,5大向右移動一格,再與2比較,2小,key插入5移去的空缺位置。
第三次插入
第四次插入,key越小,移動個數多。
最終狀態
}//列印
for(
int n:a)
system.out.
(n);
}
1)插入排序
直接插入排序的理解 來自維基百科 一般來說,插入排序都採用in place在陣列上實現。具體演算法描述如下 從第乙個元素開始,該元素可以認為已經被排序 取出下乙個元素,在已經排序的元素序列中從後向前掃瞄 如果該元素 已排序 大於新元素,將該元素移到下一位置 重複步驟3,直到找到已排序的元素小於或者等...
1 插入排序
本來是想對插入排序做乙個詳細的說明 從演算法原理 演算法優劣 演算法實現一一說起。但是要將演算法原理說的通俗易懂,不是個簡單的事情,常常需要很好的文筆和配上詳細的圖。但是最近需要複習準備面試,確實沒什麼時間去寫一系列完整地說明演算法的部落格,所以這次就只是寫下演算法實現 c 的細節和詳細注釋,找到新...
排序1 插入排序
讓我們開始排序的學習吧,首先我們先理解一下插入排序的基本思想 每一趟將乙個待排序的記錄,按其關鍵字的大小插入到已經排好序的一組記錄的適當位置上,知道所有待排序記錄全部插入為止。這個可能會和選擇排相似,但是那個是設定最大或最小,然後依次找到最大或最小插入到特定位置,而選擇依次比較後移或前移,不要混淆哦...