氣泡排序 選擇排序 直接插入排序 希爾排序

2021-09-01 02:10:15 字數 2012 閱讀 3336

冒泡法排序思路如下:

**如下:

void

bubblesort

(int

*arr,

int len)}if

(!swap)

//swap == false//如果已經有序則跳出迴圈,不再進行比較。

}}

時間複雜度:

無序:o(n

2n^2

n2)有序:o(nnn)

空間複雜度:o(111)

穩定性:穩定

選擇排序思路如下:

從待排序數字開始,後面找到比待排序數字小的數字就發生交換,一直到整個序列遍歷完。

**如下:

時間複雜度:有序:o(n

2n^2

n2)無序:o(n

2n^2n2)

空間複雜度:o(111)

穩定性:不穩定

直接插入排序思路如下:

如果有如下一組數字:4,2,6,5,3 首先當我們在最開始的時候,4 是

有序的,然後當拿到資料 2 時,我們需要把 2 放到 4 之前,那也就是

說,我們需要讓 4 往後移,然後插入 2,以此類推,我們每次在移動

的時候,是比較乙個數字,移動乙個數字,並且是從後往前移動。

**如下:

時間複雜度:有序:o(n) 越有序 越快

無序:o(n

2n^2n2)

空間複雜度:o(1)

穩定性:穩定排序

希爾排序思路如下:

**如下:

void

shell

(int

*arr,

int len,

int gap)

//組內進行直接排序

else

} arr[j + gap]

= tmp;}}

void

shellsort

(int

*arr,

int len)

;//每次的分組長度

時間複雜度:與增量陣列有關空間複雜度: o(1)

穩定性:不穩定

好的增量序列的共同特徵:

1、 最後乙個增量必須為 1;

2、應該盡量避免序列中的值(尤其是相鄰的值)互為倍數的情況。

排序 直接插入排序

從第乙個元素開始,該元素可以認為已經被排序 取出下乙個元素,在已經排序的元素序列中從後向前掃瞄 如果該元素 已排序 大於新元素,將該元素移到下一位置 重複步驟3,直到找到已排序的元素小於或者等於新元素的位置 將新元素插入到該位置後 重複步驟2 5 考慮如下陣列 int table 第乙個元素認為是第...

排序 直接插入排序

直接插入排序 定義 直接插入排序是一種最簡單的排序方式,因此也被稱為簡單插入排序 基本思想 第i趟排序將序列中的第i 1個元素ki 1插入到乙個已經按有序的子串行 k1,k2,ki 中的合適的位置,使得插入後的序列仍然保持按值有序。有這樣乙個資料元素序列,其中6 表示該元素與本序列中的其他元素有重複...

排序 直接插入排序

將乙個記錄插入到已排序好的有序表中 同時要把原來位置上的元素向後順移 從而得到乙個新的記錄數增1的有序表。待排關鍵字儲存在r中,個數為n r j 1 temp 找到插入位置,將temp中暫存的待排關鍵字插入 無論什麼情況,外部迴圈始終逐一執行,外部迴圈次數為n 演算法所需要的輔助儲存空間不隨待排序列...