小白排序之插入排序

2021-07-11 19:38:25 字數 775 閱讀 1257

插入排序,何謂插入排序呢?即我假定現在的資料已經排好,我只需要將新資料排進合適的位置即可。詳細見下文。

首先,我拿到乙個包含n個元素的陣列,索引分別為0,1,2,...n-1。我首先假定陣列的第乙個元素以及排好順序,這是顯然的。然後我將陣列的第二個元素與第乙個元素進行排序,這很簡單吧。於是我們得到了乙個排好序的二元子陣列。再然後,我們拿出第三個元素,插入到排好序的二元陣列中,怎麼插入呢?無非就是比較,然後記下索引,插入即可,由於陣列具有索引(即下標),插入與交換有些不同,交換只涉及到兩個元素,這裡的插入是將後面的元素放到合適位置上,該位置的原有元素直到要插入的元素整體向後推一位。這樣迭代下去,直到將最後乙個元素插入到陣列中。

public static void insertsort(int array){

for(int i = 1; i< array.length; i++){

int currentvalue = array[i];

int position = i;

for (int j = i - 1; j >= 0; j--) {

if (currentvalue

為什麼內迴圈要從後往前遍歷呢?原因是我們正序排列陣列,插入時被插入位置之後的元素都要向後推一位,而之前的陣列我們保持不動,故從後往前遍歷更為有效。

為什麼要定義position呢?跟選擇排序一樣是為了記住要插入的位置。

為什麼要定義currentvalue呢?因為有可能在內迴圈第一次迴圈時,我們要插入的資料就被覆蓋掉了,相當於用乙個臨時變數記下要插入的資料。

主函式測試**同選擇排序。

排序之插入排序

基本思想 每次將乙個待排序的記錄,按其關鍵字大小插入到前邊已經排好序的子陣列中的適當位置,知道全部記錄插入完成為止。分類 直接插入排序和希爾 shell 排序。一 直接插入排序 基本操作 將當前無序區的第乙個記錄r i 插入到有序區r 1.i 1 中適當的位置,使得r 1.i 變為新的有序區。每次使...

排序之插入排序

本人是純正的蒟蒻。寫這些部落格目的是為了複習一些基礎知識,同時也幫助一下比我還要弱的蒟蒻 估計沒有 排序 排序有很多種,這裡先介紹幾種最基本,最簡單的。一.插入排序 主要思想 假設前面n個元素已經有序排列,現在要插入乙個元素,使這n 1個元素有序,先在原有序列中找到應該插入的位置,然後把這個位置的數...

排序之插入排序

插入演算法 迴圈陣列,以指標資料為基值 並且記錄,通過和左側 右側 的迴圈比較,當比較值大於 小於 基值時 將大的值至後,指標繼續移動,比較,置換。直到遇到小於基值,或者到陣列邊界時截止,並且置換至首位。結束一次內迴圈,這是外迴圈的指標左側的是有序。class sort public static ...