크기가 n인 배열이 있다고 가정하고 카운팅 정렬 기술을 사용하여 중앙값과 모드를 찾아야 합니다. 이 기술은 배열 요소가 제한된 범위에 있을 때 유용합니다. 요소가 {1, 1, 1, 2, 7, 1}이고 모드가 1이고 중앙값이 1.5라고 가정합니다. 중앙값이 무엇이며 모드가 무엇인지 봅시다 -
- 중앙값은 정렬된 숫자 목록의 중간 숫자입니다.
- 모드는 목록에서 가장 많이 발생하는 요소입니다.
중앙값과 모드를 얻으려면 다음 단계를 따라야 합니다.
- 입력 배열의 크기가 n이라고 가정
- 이전 개수를 다음 인덱스로 합산하기 전에 개수 배열을 가져옵니다.
- 저장된 최대값의 인덱스는 주어진 데이터의 모드입니다.
- 최대 요소가 두 개 이상 있는 경우 그 중 하나를 사용할 수 있습니다.
- 값을 mode라는 별도의 다른 변수에 저장 .
- 카운트 정렬의 일반적인 처리를 계속합니다.
- 정렬된 배열에서 n이 홀수이면 median은 정렬된 배열의 가장 가운데에 있는 요소이고, n이 짝수이면 중간에 있는 두 개의 요소를 취하여 그 평균을 구하여 중앙값을 구합니다.리>
- 값을 median이라는 별도의 다른 변수에 저장합니다.
예시
#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