나는 2 개의 다른 종류를 쓰고있다, 하나는 선택이고 다른 하나는 삽입이다. 다음은 삽입 방법입니다.선택 및 삽입 정렬에서 비교 횟수를 계산하는 방법은 무엇입니까?
public static void iSort(String[] array)
{
int i, j, k;
String temp;
for(i = 1; i<array.length; i++)
{
k=i;
for(j = k-1; j>=0 && array[j].compareTo(array[k])>0; j--)
{
ccounter++;
temp = array[j];
array[j] = array[k];
array[k] = temp;
k--;
}
}
}
여기서 ccounter는 정적 클래스 변수입니다. 이 문자열을 1000 요소 배열을 사용하여 테스트 할 때 239507 값을 얻을 수 있습니다. 그러나 올바르게 정렬 된 문자열 배열로 테스트 할 때 값이 0이됩니다. 올바른 경우 성능이 올바르지 않습니다. n 개의 용어에 대한 n 개의 비교. 내 방법이 잘못 쓰여지거나 카운터가 잘못 배치 된 것이 아닌가 궁금합니다
를 증가 후 비교를. (즉, 결과가 '<= 0'인 결과를 비교하지 않음) – njzk2
내부 for 루프에서 for 루프 내부로 비교를 이동하십시오. 현재는 교환해야 할 때만 계산됩니다. 루프 내에서 비교가 수행되면 모든 비교가 계산됩니다. – arunmoezhi
@arunmoezhi 이렇게하면 루프 괄호에서 조건을 가져 와서 루프의 실제 본문에 배치 할 수 있습니까? – rubikscube09