Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ค่ามัธยฐานและโหมดโดยใช้การเรียงลำดับการนับใน C++


พิจารณาว่าเรามีอาร์เรย์ขนาด 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