#include
#include
#include
#include
using namespace std;
int quicksortonce(int a, int low, int high)
// 執行到此,j已指向從右端起首個小於或等於pivot的元素。
// 執行替換。
a[i] = a[j];
// 從左到右,尋找首個大於pivot的元素。
while (a[i] <= pivot && i < j)
// 執行到此,i已指向從左端起首個大於或等於pivot的元素。
// 執行替換。
a[j] = a[i];
}// 退出while迴圈,執行至此,必定是i=j的情況。
// i(或j)指向的即是樞軸的位置,定位該趟排序的樞軸並將該位置返回。
a[i] = pivot;
return i;void quicksort(int a, int low, int high)
int pivot = quicksortonce(a, low, high);
// 對樞軸的左端進行排序。
quicksort(a, low, pivot - 1);
// 對樞軸的右端進行排序。
quicksort(a, pivot + 1, high);
int evaluatemedian(int a, int n) else int main() ;
cout << evaluatemedian(a, 9) << endl;
return 0;
}
演算法 堆 求整型中位數
如何得到乙個資料流中的中位數?如果從資料流中讀出奇數個數值,那麼中位數就是所有數值排序之後位於中間的數值。如果從資料流中讀出偶數個數值,那麼中位數就是所有數值排序之後中間兩個數的平均值。例如,2,3,4 的中位數是 3 2,3 的中位數是 2 3 2 2.5 設計乙個支援以下兩種操作的資料結構 vo...
BFPRT(中位數的中位數)演算法
又稱為 中位數的中位數演算法 該演算法由 blum floyd pratt rivest tarjan 在1973年提出,最壞時間複雜度為o n 最差的空間複雜度為o logn 演算法步驟 1 將 n 個元素劃分為 n 5 個組,每組 5 個元素,若有剩餘,捨去 2 使用排序方法找到 n 5 個組中...
求100億個數的中位數
給定100億個無符號的亂序的整數序列,如何求出這100億個數的中位數 中位數指的是排序後最中間那個數 乙個無符號整數的大小為4b,則100億個數的大小為40gb,如果記憶體夠大的話可以對這100億個數載入到記憶體中,然後使用堆排序或者快速排序進行排序,取出中位數即可。使用快排時,每次劃分之後只需要比...