이번 주 화요일에 예정된 테스트를 위해 다양한 정렬 및 검색 알고리즘을 연구하려고합니다. 빠른 정렬 알고리즘을 사용할 때까지 모든 것이 잘 진행되었습니다. 나는 책이나 다른 자료가 없었기 때문에 온라인에 가서 SparkNote을 읽기 시작했습니다. 나는이 텍스트를 이해할 줄 알았는데, 나는 심지어 온라인에서 찾은 PowerPoint의 빠른 정렬 알고리즘 부분을 읽었다.빠른 정렬 알고리즘 : 다른 답변 계속 계속
그러나 SparkNote는 알고리즘의 단계별 프로세스 페이지에 예제를 제공했지만 처음에는 목록을 정렬하는 단계를 보여주지 않았습니다. 주어진 목록은 [5 9 3 8 6 4 2 1 7 0]
입니다. SparkNotes에 따르면 왼쪽에 피벗 (5)보다 작은 값과 오른쪽 피벗보다 큰 값이있는 정렬 된 목록은 [0 3 4 2 1 5 8 6 7 9]
입니다. 그러나, 내가 직접 조치를 취하려고하면, 나는 계속 [ 4 0 3 1 2 5 6 8 7 9 ]
을 얻는다. 내가했다
절차는이었다
5 9 3 8 6 4 2 1 7 0 // The initial list. Pivot = 5
5 0 3 8 6 4 2 1 7 9 // Switched 0 and 9.
5 0 3 1 6 4 2 1 7 9 // Switched 8 and 1
5 0 3 1 2 4 6 8 7 9 // Switched 6 and 2
4 0 3 1 2 5 6 8 7 9 // Switched 4 and 5 because the lines that point to the
// greater and smaller numbers crossed.
어디에 내 실수는? 또한 5 이하의 숫자가 왼쪽에 있고 5보다 큰 숫자가 오른쪽에있는 것을 볼 수 있습니다. 그렇다면 내 실수가 정렬에 실제로 영향을 줍니까?
빠른 정렬을 위해 배열을 여러 가지 방법으로 구분할 수 있습니다. Google의 "quicksort 파티션"만 있으면 여러 가지 예를 찾을 수 있습니다. – Blastfurnace