자바 JAVA/자바 기초
순위 정렬, 랭킹 정렬
saml2l
2020. 4. 26. 22:54
- 자바 수업에는 10명의 학생이 있다. 아래 배열에 각 학생의 점수가 입력되어 있다.
int[] score = {60, 34, 55, 100, 95, 76, 65, 90, 80, 87};
- 순위를 매겨보자
class Main {
public static void main(String[] args) {
int[] scores = { 60, 34, 55, 100, 95, 76, 65, 90, 80, 87 };
for (int i = 0; i < scores.length; i++) {
int rank = 1;
for (int j = 0; j < scores.length; j++) {
if (scores[i] < scores[j]) {
rank++;
}
}
}
}
}
- 한번씩 비교 할 때마다 rank 값은 1로 초기화 돼야 한다.
- j = 0, 0 부터 < scores 배열의 길이인 10까지, 즉 총 9번 반복 하면서 j의 값이 1씩 증가한다.
- scores[0](i 의 값) 이 < scores [0](j의 값) 은 일단 패스. 그 다음을 보자
- if (scores[0] (0번째 배열은 60점) < scores[1] (1번 배열은 34점) ) rank ++; 즉 60 점이 34점 보다 작으면 rank 가 하나 늘어나지만 여기서는 해당 X
- 3번 배열과 비교해보자. scores[0] < score [3], 즉 60점 < 100점. 이 경우에는 조건에 맞기 때문에 rank 가 하나 늘어난다.
- 위와 같은 방식으로 반복하면서 옆 숫자와 비교 하다 보면 순위에 맞게 rank 가 증가한다.
- 이러한 방식으로 배열 길이인 scores.length - 1, 즉 9번을 반복하면 배열의 숫자들은 각각의 맞는 순위를 가지게 된다
※실행을 해보자!!
- 역순으로 순위를 매기고 싶다면 비교 조건을 아래와 같이 하면 된다
if (scores[i] > scores[j])