"빠른 분류"라는 아이디어는 매우 간단하며 전체 분류 프로세스에는 세 가지 단계 만 있으면됩니다.
(1) 데이터 세트에서 요소를 "베이스"(피봇)로 선택하십시오.
(2) "참조"보다 작은 모든 요소는 "참조"의 왼쪽으로 이동됩니다. "참조"보다 큰 모든 요소는 "참조"의 오른쪽으로 이동됩니다.
(3) "기준선"의 왼쪽과 오른쪽에있는 두 서브 세트의 경우 모든 서브 세트에 남은 요소가 하나만있을 때까지 첫 번째 및 두 번째 단계를 반복하십시오.
예를 들어, 이제 데이터 세트 {85, 24, 63, 45, 17, 31, 96, 50}이 있습니다. 정렬하는 방법?
첫 번째 단계에서 중간 요소 45를 "베이스"로 선택하십시오. (참조 값은 임의로 선택할 수 있지만 중간 값을 선택하는 것은 이해하기 쉽습니다.)
두 번째 단계는 각 요소를 "베이스"와 비교하여 두 개의 서브 세트를 형성하기 위해, 하나는 "45보다 작고 다른 하나는"45보다 크거나 같다 "는 것입니다.
세 번째 단계는 모든 서브 세트에 하나의 요소 만 남을 때까지 두 서브 세트의 첫 번째 및 두 번째 단계를 반복하는 것입니다.
다음은 JavaScript 언어로 위의 알고리즘을 구현하기위한 온라인 정보 (여기 및 여기)에 대한 참조입니다.
먼저, 매개 변수가 배열 인 QuickSort 함수를 정의하십시오.
var quicksort = function (arr) {};그런 다음 배열의 요소 수를 확인하면 1보다 작거나 같으면 반환됩니다.
var quicksort = function (arr) {if (arr.length <= 1) {return arr; }};다음으로 "피벗"을 선택하고 원래 배열에서 분리 한 다음 두 개의 빈 배열을 정의하여 왼쪽과 하나의 오른쪽의 두 개의 서브 세트를 저장하십시오.
var quicksort = function (arr) {if (arr.length <= 1) {return arr; } var pivotindex = math.floor (arr.length / 2); var pivot = arr.splice (pivotindex, 1) [0]; var 왼쪽 = []; var right = [];};그런 다음 배열을 가로 지르기 시작하고 "베이스"보다 작은 요소를 왼쪽의 서브 세트에 넣고 오른쪽의 서브 세트에베이스보다 큰 요소를 넣습니다.
var quicksort = function (arr) {if (arr.length <= 1) {return arr; } var pivotindex = math.floor (arr.length / 2); var pivot = arr.splice (pivotindex, 1) [0]; var 왼쪽 = []; var right = []; for (var i = 0; i <arr.length; i ++) {if (arr [i] <pivot) {left.push (arr [i]); } else {right.push (arr [i]); }}};마지막으로, 재귀를 사용 하여이 프로세스를 지속적으로 반복하여 정렬 된 배열을 얻습니다.
var quicksort = function (arr) {if (arr.length <= 1) {return arr; } var pivotindex = math.floor (arr.length / 2); var pivot = arr.splice (pivotindex, 1) [0]; var 왼쪽 = []; var right = []; for (var i = 0; i <arr.length; i ++) {if (arr [i] <pivot) {left.push (arr [i]); } else {right.push (arr [i]); }} return QuickSort (왼쪽) .concat ([pivot], QuickSort (오른쪽));};그것을 사용할 때 QuickSort ()를 호출하십시오.
위는 편집기가 소개 한 JavaScript 알고리즘 시리즈의 QuickSort 알고리즘 예에 대한 자세한 설명입니다. 나는 그것이 당신에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!