ที่นี่เราจะดูวิธีหามัธยฐานของอาร์เรย์ที่เรียงแล้ว 2 อาร์เรย์ ขนาดเท่ากัน ใช้ C++ STL เก็บข้อมูล หลังได้ 2 อาร์เรย์ จะ merge รวมกัน เนื่องจาก 2 อาร์เรย์ขนาดเท่ากัน merge แล้วจะมีจำนวนคู่ ต้องหา 2 ตัวกลางแล้วหาค่าเฉลี่ย
อัลกอริทึม
median(arr1, arr2)
Begin
arr3 := array after merging arr1 and arr2
sort arr3
len := length of arr3
mid := len/2
median := (arr3[mid] + arr3[mid-1])/2
return median
End
ตัวอย่างโค้ด (C++)
#include <iostream> #include <vector> #include <algorithm> using namespace std; float median(vectorarr1, vector arr2) { vector arr3(arr1.size() + arr2.size()); merge(arr1.begin(), arr1.end(), arr2.begin(), arr2.end(), arr3.begin()); sort(arr3.begin(), arr3.end()); int len = arr3.size(); int mid = len/2; return float(arr3[mid] + arr3[mid-1])/2; } int main() { vector arr1 = {1, 3, 4, 6, 7}; vector arr2 = {4, 5, 7, 8, 9}; cout << "Median: " << median(arr1, arr2); }
ผลลัพธ์
Median: 5.5