Computer >> Máy Tính >  >> Lập trình >> Javascript

Làm cách nào để triển khai sắp xếp nhanh trong JavaScript?

Sắp xếp nhanh

Sắp xếp nhanh là một trong những phương pháp sắp xếp quan trọng nhất trong javascript. Nó nhận một giá trị tổng hợp (một giá trị ngẫu nhiên) từ một mảng. Tất cả các phần tử khác trong mảng được chia thành hai danh mục, chúng có thể nhỏ hơn giá trị pivot và lớn hơn giá trị pivot.

Sau đó, mỗi danh mục (nhỏ hơn pivot và lớn hơn pivot) phải tuân theo cùng một quy trình là một pivot được chọn sau đó mỗi danh mục được chia thành các danh mục con (nhỏ hơn pivot và lớn hơn pivot) .

Cuối cùng, các danh mục con được phân chia theo cách mà chúng có thể chứa một phần tử hoặc không có phần tử nào nếu không còn phần tử nào để so sánh. Phần còn lại của các giá trị sẽ được biểu thị là một trục ở một số điểm trước đó và không nhỏ giọt xuống danh mục phụ thấp nhất này.

Ví dụ

<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>

đầu ra

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