이전 포스팅에서 풀어보았던 4가지 통계값 찾기 문제를 다른 방법으로 풀어보자
첫번째 바꿔보고 싶은 것은 C언어에서 반올림 방법을 익힌 뒤 산술평균 문제에 적용하는 것이다.
반올림 대상 값으로 음수가 들어올 수 있음을 유의하자.
C언어에서 반올림 하는 방법
출력만 하는 경우는 아래와 같이 형식지정자를 쓰면 반올림이 된다.
연산 등을 위해 반올림하는 경우 math.h를 사용한다.
몇 번째 자리에서 반올림 할 것인지에 따라 나눠주고 곱해주면 된다.
함수를 사용하는 것보다 사칙연산을 사용하는 것이 시간이 적게 걸리므로 이 부분은 수정 하지 않는 게 좋다고 결론냈다. 음수인 경우 양수와 반대로 -.5f 를 더해주는 것을 잊지말자.
두 번째로 고치고 싶은 것은 입력받은 숫자를 배열에 저장한 뒤 이 배열을 오름차순으로 정렬해서 중앙값을 찾는 것이다.
이를 위해 이용할 알고리즘은
- Merge Sort
- Heap Sort
- Quick Sort
모두 정렬하지 않고 k 번째 값을 찾는
- Quick Select
- Medium of Medium
우선 Merge Sort 를 구현하여 중앙값을 찾아보자.
속도가 더 느려지지만 MergeSort로도 충분히 해결할 수 있다.
다음은 Quick Select 를 구현해 활용해보자.
QuickSelect 는 size 값만을 받아서 하는 방식으로 해결할 수도 있다.