본문 바로가기
Java (국비)/Java 메모

최소값 구하기

by Hwanii_ 2023. 5. 7.
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