พิจารณาว่าเรามีอาร์เรย์ขนาด n เราต้องหาค่ามัธยฐานและโหมดโดยใช้เทคนิคการเรียงลำดับการนับ เทคนิคนี้มีประโยชน์เมื่อองค์ประกอบอาร์เรย์อยู่ในช่วงจำกัด สมมติว่าองค์ประกอบคือ {1, 1, 1, 2, 7, 1} จากนั้นโหมดคือ 1 และค่ามัธยฐานคือ 1.5 ให้เราดูว่าค่ามัธยฐานคืออะไรและโหมดคืออะไร -
- ค่ามัธยฐานคือตัวเลขตรงกลางในรายการตัวเลขที่จัดเรียง
- โหมดคือองค์ประกอบที่มีจำนวนครั้งสูงสุดในรายการ
ในการรับค่ามัธยฐานและโหมด เราต้องทำตามขั้นตอนเหล่านี้ -
- สมมติว่าขนาดของอาร์เรย์อินพุตเป็น n
- นำอาร์เรย์การนับก่อนที่จะรวมการนับก่อนหน้าลงในดัชนีถัดไป
- ดัชนีของค่าสูงสุดที่เก็บไว้ในนั้น คือโหมดของข้อมูลที่กำหนด
- หากมีองค์ประกอบสูงสุดมากกว่าหนึ่งรายการ เราสามารถนำองค์ประกอบสูงสุดหนึ่งองค์ประกอบมาใช้ได้
- เก็บค่าไว้ในตัวแปรอื่นที่ชื่อ mode .
- ดำเนินการประมวลผลตามปกติของการเรียงลำดับการนับต่อ
- ในอาร์เรย์ที่จัดเรียง ถ้า n เป็นเลขคี่ ค่ามัธยฐานจะเป็นองค์ประกอบที่อยู่ตรงกลางส่วนใหญ่ของอาร์เรย์ที่จัดเรียง และหาก n เป็นเลขคู่ ให้นำองค์ประกอบตรงกลางสององค์ประกอบ จากนั้นหาค่าเฉลี่ยขององค์ประกอบเหล่านั้นเพื่อได้ค่ามัธยฐาน
- เก็บค่าไว้ในตัวแปรอื่นที่ชื่อค่ามัธยฐาน
ตัวอย่าง
#include <iostream> using namespace std; bool isRepresentedInDDigits(int num, int d, int base) { if (d==1 && num < base) return true; if (d > 1 && num >= base) return isRepresentedInDDigits(num/base, --d, base); return false; } bool checkNumber(int num, int d) { // Check for all bases one by one for (int base=2; base<=32; base++) if (isRepresentedInDDigits(num, d, base)) return true; return false; } int main() { int num = 8; int dig = 2; if(checkNumber(num, dig)) cout << "Can be represented"; else cout << "Can not be represented"; }
ผลลัพธ์
Can be represented