冒泡法排序思路如下:
**如下:
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 演算法所需要的輔助儲存空間不隨待排序列...