본문 바로가기
C

배열에서 최댓값 인덱스 찾기

by 긍열! 2021. 6. 2.
728x90

처음 작성한 내 코드

for(i=0; i<9; i++){
   for(j=i; j<9; j++){
	if(array[i] > array[j]) lar = i;
	else if (array[i] < array[j]) lar = j;
    }
}

배열에서 가장 큰 값의 인덱스 값을 lar라는 이름의 변수에 저장하는 것으로, 초기값은 0으로 지정했다.

그리고 두 수씩 모두 비교를 해서 큰 값이 나올 때 마다 그 값의 인덱스를 lar 값으로 만들어 lar값을 업데이트시키는 방식으로 썼다. 

 

 

수정

for(i=1; i<9; i++){
	if(array[i] > array[lar]) lar=i;
}

6줄에서 3줄로 반이나 코드가 줄었다. 

배열에서 가장 큰 값의 인덱스 값을 lar라는 이름의 변수에 저장하는 것으로 초기값을 0으로 지정한 것까지는 같다.

하지만 수정한 코드에선 두 수씩 모두 비교를 하는 것이 아니라, 비교 결과 더 큰 수와 아직 비교하지 않은 남은 수들을 서로 비교하는 것이다. 계산량 역시 크게 줄은 것이다.

2 9 5 3 4 라면

내 코드에서는 2와 9의 비교에서 이미 9가 더 큰 것을 알았는데도 2와 5, 2와 3을 비교하는 불필요한 과정을 거쳤던 것이다.

수정된 코드에선 2와 9의 비교 이후 9가 더 큰 걸 알았으면 2는 이제 그만 두고 9와 나머지 수를 비교한다. 

 

728x90

'C' 카테고리의 다른 글

배열  (0) 2021.06.01
고정소수점과 부동소수점  (1) 2021.02.09
확장열(Escape Sequence, 제어 시퀀스, 특수문자, 이스케이프시퀀스)  (0) 2021.01.14
데이터 타입  (0) 2021.01.04
printf 함수  (0) 2021.01.04