資料結構定義和演算法 排序 插入排序

2021-10-09 20:52:05 字數 569 閱讀 6797

首先將陣列中的資料分為2個區間,即已排序區間和未排序區間;

初始已排序區間只有乙個元素,就是陣列的第乙個元素;

取未排序區間的元素,插入已排序區間中合適的位置,並保持已排序區間一直有序;

重複這個過程,直到未排序中元素為空;

效能分析

最小時間複雜度:當資料完全有序時,只需進行遍歷一次插入操作,時間複雜度為o(n);

最大時間複雜度:當資料完全逆序時,每次插入時都需要搬移所有的已排序區間資料,時間複雜度為o(n^2);

平均時間複雜度:每次插入的平均時間複雜度為o(n),但是需要插入n次,所以平均複雜度是o(n^2);

空間複雜度:插入排序演算法不需要額外的儲存空間,故而空間複雜度為o(1),為原地排序演算法;

演算法穩定性:我們可以在未排序區間中相同數值的數放到已排序區間中相同數的後面,就可以保持演算法穩定,因此插入排序演算法是穩定的;

《資料結構與演算法之美》 -- 王爭

資料結構和演算法 插入排序

直接插入排序的基本操作是將乙個記錄插入到已經排好的有序表中,從而得到乙個新的 記錄數增1的有序表。對於給定的一組記錄,初始時假定第乙個記錄自成乙個有序序列,其餘記錄為無序序列。接著從第二個記錄開始,按照記錄的大小依次將當前處理的記錄插入到其之前的有序序列中,直到最後乙個記錄插到有序序列中為止。當最好...

資料結構和演算法 插入排序

它的工作原理是通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。插入排序在實現上,通常採用in place排序 即只需用到 o 1 的額外空間的排序 因而在從後向前掃瞄過程中,需要反覆把已排序元素逐步向後挪位,為最新元素提供插入空間。git位址 public clas...

資料結構和演算法 插入排序

把 n 個待排序的元素看成乙個有序表和乙個無序表,開始時有序表只有乙個值,無序表有 n 1 個值,每次排序從無序表取出元素與有序表進行比對,插入適當位置成為新的有序表。把 n 個待排序的元素看成乙個有序表和乙個無序表,從無序列表取資料與有序列表對比並插入合適的位置 排序法平均時間 最差情形 穩定度額...