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 |