根據兩個元素的比較結果然後進行交換,主要是氣泡排序和快速排序。
基本思想:若為公升序,則從後往前通過兩兩交換將無序區最小的元素放到有序區最後一位,無序區長度每次少1,最多n-1次排完。
if (flag == false)return;//沒有交換,說明有序了
print(arr, n, i+1);}}
第0輪: 6 5 3 1 8 7 2 4//初始情況
第1輪: 1 6 5 3 2 8 7 4
第2輪: 1 2 6 5 3 4 8 7
第3輪: 1 2 3 6 5 4 7 8
第4輪: 1 2 3 4 6 5 7 8
第5輪: 1 2 3 4 5 6 7 8
空間複雜度:o(
1)時間複雜度:
對氣泡排序的改進,選乙個基準,每一趟比它小的去左邊,比它大的去右邊,然後左右兩邊遞迴實現,直到每一部分沒有或者僅有乙個元素。
void quicksort(int arr, int low, int high)
}int
partition(int arr, int low, int high)
arr[low] = pivot;
return low;
}
空間複雜度:需要乙個遞迴工作棧,其容量與遞迴呼叫最大深度一致。
時間複雜度:
穩定性:不穩定。
對於時間複雜度和空間複雜度的平均值為什麼是最好情況的複雜度而不是最差情況的複雜度,我的理解是:對於乙個隨機的數列的乙個基準數,它的值位於中間的概率是比較高的,也就是說,一般情況下都是趨於最好情況而不是趨於最差情況,故…
演算法平均時間複雜度
最好時間複雜度
最差時間複雜度
空間複雜度
穩定性備註
直接插入o(
n2) o(
n)o(
n2) o(
1)穩定
折半插入o(
n2) o(
nlog
2n) o(
n2) o(
1)穩定
shello(
n1.3
) o(
n)o(
n2) o(
1)不穩定
和增量序列有關冒泡o
(n2)
o(n)
o(n2
) o(
1)穩定
子串行全域性有序,不同於插入排序快排o
(nlo
g2n)
o(nlog
2n) o(
n2) o(
log2
n)不穩定
資料結構 交換排序
交換排序的基本思想是 兩兩比較待排序記錄的關鍵字,如果發生逆序 即排列順序與排序後的次序正好相反 則交換之,直到所有記錄都排好序為止。基本思路 每趟不斷將記錄兩兩比較,並按 前小後大 或 前大後小 規則交換。優點 每趟結束時,不僅能擠出乙個最大值到最後面位置,還能同時部分理順其他元素 一旦下趟沒有交...
資料結構 排序之交換排序
本節將兩種交換排序氣泡排序和快速排序 氣泡排序是最簡單的交換排序方法,比較相鄰兩個記錄的關鍵字,將大的放到右邊,小的放到左邊,如圖所示 從而使關鍵字小的左移 大的右移 每一次迴圈最右邊的必定是關鍵字最大的元素,外面再加一層迴圈即可得到有序序列。實現 include using namespace s...
資料結構 內部排序 交換排序
3.2 快速排序 4.main函式 5.小結 說明 以下 實現最終均為遞增序列,即從小到大排序。include define elemtype int 函式宣告 void swap int a,int b 1 1.交換 void bubblesort elemtype a int n 1 2.氣泡排...