답변을 찾으려고 시도한 모든 토론을 읽었지만 답변이 없기 때문에이 방법을 시도하고 있습니다. 내 테스트 케이스로 간단한 배열을 사용하여선택 스왑 수를 계산하십시오. 정렬
public static int SelectionSort(long[] num)
{
int i, j, first;
long temp;
int swap = 0;
int pass = 0;
int count = 0;
boolean Mini = false;
for (i = num.length - 1; i > 0; i--)
{
for(int k = 0; k < num.length; k++)
{
System.out.println(" k = " + k
+ " \t X[i] = " + num[k] + " swap count: " + swap);
}
System.out.println("");
first = 0; //initialize to subscript of first element
for(j = 1; j <= i; j ++) //locate smallest element between positions 1 and i.
{
if(num[j] < num[first])
{
first = j;
//Mini = true;
}
}
//if(Mini){
// swap++;
//}
temp = num[first]; //swap smallest found with element in position i.
num[first] = num[i];
num[i] = temp;
}
return swap;
}
: 그것은 첫 번째와 마지막 요소 만 교환 있기 때문에 스왑의 수는 1 동일시한다
long[] X = {1, 4, 3, 2, 5};
. 그러나 작동하지 않습니다. 나는 if 조건이 작동하지 않는다는 것을 알고 있지만, 나는 생각할 수 없다. 항목을 실제로 바꿀 때 스왑을 증가시키는 논리는 작동하지 않는 것 같습니다.
유일한 문제는 프로그램이 매번 스왑을 늘리는 것입니다. 나는 그것이 교환 할 때만 증가시키기를 원한다. 지금 당장 스왑을 증가 시키면 스왑 합계가 4가됩니다. 스왑을 1로 줄 수 있습니다. – tjg92
예! 그게 효과가! 정말 고맙습니다! – tjg92