Computer >> Máy Tính >  >> Lập trình >> C ++

Trung vị và Chế độ sử dụng Sắp xếp đếm trong C ++

Hãy xem xét chúng ta có một mảng kích thước n, chúng ta phải tìm Trung vị và Chế độ bằng cách sử dụng kỹ thuật sắp xếp đếm. Kỹ thuật này rất hữu ích khi các phần tử của mảng nằm trong phạm vi giới hạn. Giả sử các phần tử là {1, 1, 1, 2, 7, 1}, thì Chế độ là 1 và Trung vị là 1,5. Hãy để chúng tôi xem Trung vị là gì và Chế độ là gì -

  • Số trung vị là số chính giữa trong danh sách các số được sắp xếp
  • Chế độ là phần tử có số lần xuất hiện tối đa trong danh sách

Để có được Trung vị và Chế độ, chúng ta phải làm theo các bước sau -

  • Giả sử rằng kích thước của mảng đầu vào là n
  • Lấy mảng đếm trước khi tính tổng các số trước đó của nó thành chỉ mục tiếp theo
  • Chỉ số của giá trị tối đa được lưu trữ trong đó, là chế độ của dữ liệu đã cho.
  • Nếu có nhiều hơn một phần tử tối đa, thì chúng tôi có thể lấy một trong số chúng
  • Lưu trữ giá trị vào một biến riêng biệt khác có tên mode .
  • Tiếp tục với quy trình sắp xếp số đếm bình thường.
  • Trong mảng đã sắp xếp, nếu n là số lẻ, thì trung vị là phần tử lớn nhất ở giữa của mảng đã sắp xếp và nếu n là chẵn, thì lấy hai phần tử ở giữa, sau đó tìm giá trị trung bình của chúng để lấy trung vị.
  • Lưu trữ giá trị vào một biến riêng biệt khác có tên là trung vị.

Ví dụ

#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";
}

Đầu ra

Can be represented