초급 정렬의 특징은....정렬대상과 출력대상이 같습니다...
그리고...중급 정렬은 정렬대상과 출력대상이 다르죠...
<초급 정렬>
If 합계(i) < 합계(j) Then Temp = 합계(i) 합계(i) = 합계(j) 합계(j) = Temp End If
<중급 정렬>
If 지불금액(i) > 지불금액(j) Or _ (지불금액(i) = 지불금액(j) And 일련번호(i) > 일련번호(j)) Then Temp = 지불금액(i) 지불금액(i) = 지불금액(j) 지불금액(j) = Temp Temp = 예약일자(i) 예약일자(i) = 예약일자(j) 예약일자(j) = Temp Temp = 일련번호(i) 일련번호(i) = 일련번호(j) 일련번호(j) = Temp End If
정렬에서 초급과 중급의 차이점을 비교해 보세요...초급유형 기본틀에서..진하게 표기된 부분이 추가된 것을 알 수 있습니다. 동일값 발생시...단 이하 처리 때문에 If문에서는 or 이후에 코딩이 추가되고..교환하는 소스 코딩도 추가되었습니다.
마찬가지입니다. 초급에서 최대/최소값 구하는 유형을 확대해서 이해하시면 됩니다
문제를 보겠습니다.
[문제] 예약수량*예약금액의 값이 가장 큰 자료의 일련번호를 출력하시오 만약 큰 값이 중복될 경우느 중복자료 중 가장 큰 일련번호를 출력하시오
초급유형의 최대/최소 문제는 (최대/최소 대상과 출력 대상이 같습니다.)
If 최대값 < 매출액 * 제조포인트 Then 최대값 = 매출액 * 제조포인트 End If
고급유형의 최대/최소 문제는
위 문제처럼 다릅니다. 예약수량*예약금액은 최대 대상이고 일련번호는 출력 대상입니다.
그러므로 기본 코딩에서 추가되어야 합니다.
If 최대값 < 예약수량 * 예약금액 Or _ (최대값 = 예약수량 * 예약금액 And 최대일련번호 < 일련번호) Then 최대값 = 예약수량 * 예약금액 최대일련번호 = 일련번호 End If
만약 이하 부분을 처리하기 위해 진하게 표기된 소스가 추가되었습니다. 정렬과 소스는 다르나...개념은 같습니다. or 이후에 추가해 주시면 됩니다. 그리고 최대일련번호를 출력하므로 if문 안에 코딩을 추가하시구요.
잘 이해가 안되면 전화주시기 바랍니다. |