whitour   7년 전

오름차순 정렬을 퀵솔트로 구현해보았는데 정답이 아니라고 떠서 이렇게 질문드립니다.


어디에서 문제가 있을까요? 첨부합니다.

whitour   7년 전

자답입니다.  문제는 41라인에 조건이 일치하지 않을 경우 피벗의 위치를 변경해주지 않고 계속 진행해나가면서 일어난 문제군요.

수정한 코드입니다. 혹시 더 나은 해결책이 있다면 부탁드립니다 ㅠ  효율성 측면에서요


if(pivot<intArray[samePoint]) samePoint--;
int temp = pivot;
intArray[pivotPoint] = intArray[samePoint];
intArray[samePoint] = temp;

if(samePoint>l_hold){
quickSort(intArray, l_hold, samePoint-1);
}
if(samePoint<r_hold){
quickSort(intArray, samePoint+1, r_hold);
}
break;
}
}
}
}

댓글을 작성하려면 로그인해야 합니다.