演算法 求n個數的中位數(C )

2021-10-13 22:05:57 字數 842 閱讀 2380

#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億個數載入到記憶體中,然後使用堆排序或者快速排序進行排序,取出中位數即可。使用快排時,每次劃分之後只需要比...