時間複雜度:平均o(n*log2n) 最壞的情況o(n^2)
所以傳統的快排是無法ac的
看了題解,運用二分思想,複雜度就降到o(log2n)了#include
using
namespace std;
int n, a[
100005];
void
quicksort
(int array,
int l,
int r)
while
(left < right && array[left]
<= pivot)
left++;if
(left
} array[left]
=pivot;
quicksort
(array, l, right-1)
;quicksort
(array, left+
1, r);}
intmain()
quicksort
(a,1
, n)
;for
(int i =
1; i < n ; i++
) cout<
<
}
#include
using
namespace std;
int n, a[
100005];
void
quicksort
(int array,
int l,
int r)
}while
(left<=right);if
(lquicksort
(array, l, right);if
(left
quicksort
(array, left, r);}
intmain()
quicksort
(a,1
, n)
;for
(int i =
1; i < n ; i++
) cout<
<
}
資料結構 排序演算法
include include define maxitem 100 typedef char keytype 5 typedef int elemtype typedef struct rec elemnode maxitem 氣泡排序演算法 void bubblesort elemnode r,...
資料結構 排序演算法
排序演算法分為內部排序和外部排序兩大類。內部排序 在計算機記憶體中完成的排序演算法 外部排序 不能再記憶體中文完成,必須在磁碟或者磁帶上完成的排序演算法 內部排序是研究的重點問題,通常我們講的八大排序演算法也主要是講的內部排序演算法。排序演算法的穩定性和時間空間複雜度 本文重點介紹以下幾種排序演算法...
資料結構 排序演算法
直接插入排序是指將r i r n 插入到已經有序的r 1 r i 1 序列中。r 0 是乙個哨兵,起到作為邊界條件並作為暫存單元的作用。實際上,一切為簡化邊界條件而引入的附加節點 元素 均可稱為哨兵。例如單鏈表中的頭結點。對於有n個記錄的集合,要進行n 1趟排序。其最優時間複雜度是o n 平均時間複...