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

เพิ่มค่ามัธยฐานของอาร์เรย์ให้ใหญ่สุดใน C++


คำชี้แจงปัญหา

รับอาร์เรย์ arr[] ขององค์ประกอบ N และจำนวนเต็ม K โดยที่ K

หากอาร์เรย์อินพุตคือ {1, 3, 2, 5} และ k =3 แล้ว−

  • การจัดเรียงอาร์เรย์จะกลายเป็น {1, 2, 3, 5}
  • แทรก 3 องค์ประกอบที่มากกว่า 5 หลังจากที่อาร์เรย์การดำเนินการนี้กลายเป็น {1, 2, 3, 5, 6, 6, 6}
  • ค่ามัธยฐานของอาร์เรย์ใหม่คือ 5

อัลกอริทึม

<ก่อน>1. ในการเพิ่มค่ามัธยฐานของอาร์เรย์ผลลัพธ์ให้สูงสุด องค์ประกอบทั้งหมดที่ต้องแทรกต้องมากกว่าองค์ประกอบสูงสุดจากอาร์เรย์2 จัดเรียงอาร์เรย์และค่ามัธยฐานของอาร์เรย์จะเป็น arr[ขนาด / 2] หากขนาดเป็นเลขคี่อื่น (arr[(ขนาด / 2) – 1] + arr[ขนาด / 2]) / 2

ตัวอย่าง

#include ใช้เนมสเปซ std;double getMaxMedian(int *arr, int n, int k){ int newSize =n + k; ค่ามัธยฐานสองเท่า เรียงลำดับ(arr, arr + n); ถ้า (newSize % 2 ==0) { ค่ามัธยฐาน =(arr [(newSize / 2) - 1] + arr [newSize / 2]) / 2; ค่ามัธยฐานกลับ; } มัธยฐาน =arr[newSize / 2]; ค่ามัธยฐานกลับ;}int main(){ int arr[] ={1, 3, 2, 5}; int n =sizeof(arr) / sizeof(arr[0]); int k =3; ศาล <<"ค่ามัธยฐานสูงสุด =" < 

ผลลัพธ์

เมื่อคุณคอมไพล์และรันโปรแกรมข้างต้น มันสร้างผลลัพธ์ดังต่อไปนี้−

ค่ามัธยฐานสูงสุด =5