資料結構 插入排序

2021-09-24 03:12:21 字數 900 閱讀 3230

/**

* 插入排序

* 基本思想:1、隨機從待排序的序列裡選擇乙個數,將這個數移除該序列,

* 將這個數插入到待排序序列的正確位置,直到每個數都被選擇過 才結束

* 最終步驟:

* 1、將第一待排序序列第乙個元素看做乙個有序序列,把第二個元素到最後乙個元素當成是未排序序列。

2、從頭到尾依次掃瞄未排序序列,將掃瞄到的每個元素插入有序序列的適當位置。

(如果待插入的元素與有序序列中的某個元素相等,則將待插入元素插入到相等元素的後面。)

* 該演算法特點:實現簡單

*         1、資料量少時,效率高

*         2、最壞情況下(逆有序)時間複雜度是o(n*n),空間複雜度o(1).

*         3、最好情況下(正有序)是o(n)

* * 我實現過程中遇到的問題:

* 思想好明白,但是實現起來,那我豈不是要用乙個陣列用於儲存 抽出的有序序列呢?

* (答:不需要的,因為這個有序的序列 的陣列 是從0一直增加到array.length-1的,

*       所以可以在原序列的前幾位(指從0一直變到array.length-1)作為有序序列的儲存空間。)

*並且即使這樣,那我還要把這個已有序的數列 一會可能向左移動一位,一會可能向右移動一位

*這該腫麼辦呢?那就移唄。

* */

public int insertsort(int sourcearray) 

array[j]=temp;

} return array;

}

動畫演示(複製部落格 傳送門:

資料結構 插入排序

演算法中經常會用到各種各樣的演算法,比較簡答的思想就是氣泡排序,一般剛開始程式設計時遇到排序問題時,會很容易想到冒泡排,氣泡排序是通過兩輛比較數值,從而將數字移動到開始或者末尾的位置,反覆重複這個過程從而就達到了排序的目的。其時間複雜度大概是 n2 還有一種比較常用的插入排序,其思想與氣泡排序比較類...

資料結構 插入排序

一 直接插入排序 1 直接插入排序的演算法思想 r i 的鍵值ki與r 0 r i 1 的鍵值依次比較 從後往前比 找到r i 應插入的位置,並把從該位置開始的記錄後移乙個位置,把r i 插入到找到的插入位置,完成一趟直接排序 重複選r i 1 r n 完成上述操作,直到排序完畢 注 為什麼要從後往...

資料結構 插入排序

插入排序的基本思想是 每步將乙個待排序的物件,按其關鍵字大小,插入到前面已經排好序的一組物件的適當位置上,直到物件全部插入為止。簡言之,邊插入邊排序,保證子串行中隨時都是排好序的。新元素插入到 在已形成的有序表中線性查詢,並在適當位置插入,把原來位置上的元素向後順移。關鍵字序列t 13,6,3,31...