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

2021-09-27 07:08:07 字數 1359 閱讀 8350

基本思想:

每一步將乙個待排序的元素,按其排序碼的大小,插入到前面已經排好序的一組元素的合適位置上去,直到元素全部插完為止。

1. 元素集合越接近有序,直接插入排序演算法的時間效率越高

2. 時間複雜度:最優情況下:o(n),最差情況下:o(n^2)

3. 空間複雜度:o(1),它是一種穩定的排序演算法

4. 穩定性:穩定

基本思想:

插入排序的基本操作就是將乙個資料插入到已經排好序的有序資料中,從而得到乙個新的、個數加一的有序資料。

它把要排序的陣列分成兩部分:第一部分包含了這個陣列的所有元素,但將最後乙個元素除外(讓陣列多乙個空間才有插入的位置),而第二部分就只包含這乙個元素(即待插入元素)。在第一部分排序完成後,再將這個最後元素插入到已排好序的第一部分中。

**實現:

public class insertsort  else  else 

}//找到要插入的位置

data[j + 1] = temp;}}

}}

優化:

public class insertsort 

//將需要插入的數放入此位置

data[j] = temp;

}return data;}}

1. 希爾排序是對直接插入排序的優化

2. 當gap>1時都是預排序,目的是讓陣列更接近於有序。當gap == 1時,陣列已經接近有序了,這樣就會很快。這樣整體而言,可以達到優化的效果。

3. 希爾排序的時間複雜度不好計算,平均複雜度o(n^1.3——n^2)

4. 穩定性:不穩定

基本思想:

**剛開始看我就有點懵0.0,所以又從網上挖來了靜圖

**實現:

public class shellsort  else

break;

}data[j + gap] = temp;}}

}}

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

將乙個資料插入到已經排好序的有序資料中,從而得到乙個新的 個數加一的有序資料 插入排序分為兩種 直接插入排序和希爾排序 插入排序與打撲克時整理手上的牌非常類似。摸來的第1張牌無須整理,此後每次從桌上的牌 無序區 中摸最上面的1張並插入左手的牌 有序區 中正確的位置上。為了找到這個正確的位置,須自左向...

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

例如 給定乙個無序陣列int arr n代表集合陣列的長度,給出乙個演算法將陣列arr按照從小到大的順序進行排列。插入排序 看當前位置i的值是否比它前乙個數小,如果小就與前面的數交換位置。public static void insertionsort int arr,int n public st...

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

一 排序的相關概念 1 排序 將任意序列的資料元素,重新排列成按關鍵字有序 遞增有序或遞減有序 的序列過程。2 穩定性 若在排序過程中,序列的兩個關鍵字值相同的記錄,在排序結束後,相對位置不發生改變,則稱所用的排序方法為穩定的。3 排序方法的兩個效能指標 時間複雜度和空間複雜度。二 插入排序 1 基...