Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript에서 빠른 정렬을 구현하는 방법은 무엇입니까?

<시간/>

빠른 정렬

빠른 정렬은 자바스크립트에서 가장 중요한 정렬 방법 중 하나입니다. 배열에서 피벗 값(임의 값)을 취합니다. 배열의 다른 모든 요소는 두 개의 범주로 분할됩니다. 이들은 피벗 값보다 작고 피벗 값보다 클 수 있습니다.

각 범주(피벗보다 작고 피벗보다 큼)는 동일한 절차를 거쳐 피벗이 선택되고 각 범주는 하위 범주(피벗보다 작음 및 피벗보다 큼)로 나뉩니다. .

결국 하위 범주는 요소를 포함하거나 비교할 요소가 더 이상 없는 경우 요소를 포함하지 않는 방식으로 나뉩니다. 나머지 값은 일부 이전 지점에서 피벗으로 표시되며 이 가장 낮은 하위 범주로 흘러가지 않습니다.

예시

<html>
<body>
<script>
   function quickSort(originalArr) {
      if (originalArr.length <= 1) {
         return originalArr;
         } else {
               var leftArr = [];              
               var rightArr = [];
               var newArr = [];
               var pivot = originalArr.pop();      //  Take a pivot value
               var length = originalArr.length;
               for (var i = 0; i < length; i++) {
                  if (originalArr[i] <= pivot) {    // using pivot value start comparing
                     leftArr.push(originalArr[i]);      
               } else {
                       rightArr.push(originalArr[i]);
             }
           }
         return newArr.concat(quickSort(leftArr), pivot, quickSort(rightArr)); // array will be                                                                            //returned untill sorting occurs
      }
   }
   var myArray = [9, 0, 2, 7, -2, 6, 1 ];
   document.write("Original array: " + myArray);
   var sortedArray = quickSort(myArray);
   document.write("Sorted array: " + sortedArray);
</script>
</body>
</html>

출력

Original array: 9,0,2,7,-2,6,1
Sorted array: -2,0,1,2,6,7,9