728x90
int tmp, min;
for(int i = 0; i < arr.length - 1; i++) {
min = i;
for(int j = (i + 1); j < arr.length; j++) {
if(arr[j] < arr[min]) {
min = j;
}
}
tmp = arr[min];
arr[min] = arr[i];
arr[i] = tmp;
1회차
min = 0
arr[1] < arr[0]
참이면 1이 min에 저장되고 다음 루프로
거짓이면 if문을 패스하고 다음 루프로
2회차
1회차 if문이 참이였을 경우
min = 1
arr[2] < arr[1]
참이면 2가 min에 저장되고 다음 루프로
거짓이면 if문을 패스하고 다음 루프로
3회차
...
보면,
if 조건식의 j랑 min이 배열의 인덱스를 가리키는 용도로 쓰이고 있음을 인지 해야 한다 ★
여기서 min이랑 j가 1차원적으로, 아 min은 min 이고 j는 j구나 라고 생각하지 않기.
어디에 쓰이는지를 생각 하자.
식을 구현할 때,
이 부분이 헷갈리면
if (arr[j] < arr[min]) {
min = arr[j];
}
등 처럼 잘못 나타낼 수 있다.
얘가 의미하는 것은, arr[j] 배열의 "값"이 min에 저장된다는 의미.
그러면 다음 루프를 돌 때
arr[j] < arr[arr[j]]가 되는 것이다.
인덱스 번호가 아니라 arr[j] 배열의 값을 넣게 되서 완전히 다른 결과를 보게 된다.
반응형
'Java (국비) > Java 메모' 카테고리의 다른 글
객체 생성 하기 3 (원) (0) | 2023.05.10 |
---|---|
객체 생성 하기 2 (책) (0) | 2023.05.10 |
객체 생성 하기 1 (학생) (0) | 2023.05.10 |
정렬 과제 자료 (0) | 2023.05.07 |
23.05.07 (0) | 2023.05.07 |