使用 JavaScript 中的快速排序对文字数组进行排序

javascriptweb developmentfront end technologyobject oriented programming更新于 2026/1/26 8:12:17

我们需要编写一个 JavaScript 函数,该函数接受一个数字数组并使用快速排序算法对其进行排序。

快速排序:

该算法基本上是一种分而治之算法,我们在每次循环中选择一个枢轴,并将所有小于枢轴的元素放在其左侧,所有大于枢轴的元素放在其右侧(如果其升序排列,否则相反)

示例

其代码为 −

const arr = [43, 3, 34, 34, 23, 232, 3434, 4, 23, 2, 54, 6, 54];
// 查找"枢轴"数组中的元素,用于与所有其他元素进行比较
// 然后根据元素的值在元素之前或之后移动元素
// 旋转
const quickSort = (arr, left = 0, right = arr.length - 1) => {
   let len = arr.length, index;
   if(len > 1) {
      index = partiton(arr, left, right)
         if(left < index - 1) {
            quickSort(arr, left, index - 1)
           }
          if(index < right) {
            quickSort(arr, index, right)
      }
   }
   return arr
}
const partion = (arr, left, right) => {
   let middle = Math.floor((right + left) / 2),
   pivot = arr[middle],
   i = left, // 起始指针位于数组中的第一个项
     j = right // 将指针起始于    数组的最后一项
   while(i <= j) {
      // 将左指针向右移动,直到左指针处的值
      // 大于枢轴值
      while(arr[i] < pivot) {
          i++
      }
      // 将右指针向左移动,直到右指针处的值
      // 小于枢轴值
      while(arr[j] > pivot) {
         j--
      }
      // 如果左指针小于或等于
      // 右指针,则交换值
      if(i <= j) {
         [arr[i], arr[j]] = [arr[j], arr[i]] // ES6 解构交换
         i++
         j--
      }
   }
   return i
}
console.log(quickSort(arr));

输出

控制台中的输出 −

[
   2, 3, 4, 6, 23,
   23, 34, 34, 43, 54,
   54, 232, 3434
]

相关文章


有用资源