返回

数据从小到大规律 排序算法中的快速排序

前端

理解排序的基本思想,我们可以发现,快速排序是将待排序的数组分为两个部分,其中一部分包含小于或等于某个特定值的元素,另一部分包含大于或等于该值的元素。然后,对这两个部分分别进行递归排序。

这种划分算法的关键在于选择合适的划分值。如果划分值选取适当,则可以最大程度地减少需要进一步排序的元素数量。快速排序在平均情况下具有O(n log n)的时间复杂度,在最坏情况下具有O(n^2)的时间复杂度。

现在,我们来具体地了解一下如何用JavaScript实现快速排序算法。

JavaScript实现快速排序

首先,我们需要定义一个函数来进行快速排序。这个函数接收一个数组和两个索引作为参数,第一个索引代表要排序的数组的起始位置,第二个索引代表要排序的数组的结束位置。

function quickSort(array, left, right) {
  if (left >= right) {
    return;
  }
  let pivot = array[Math.floor((left + right) / 2)];
  let i = left;
  let j = right;
  while (i <= j) {
    while (array[i] < pivot) {
      i++;
    }
    while (array[j] > pivot) {
      j--;
    }
    if (i <= j) {
      let temp = array[i];
      array[i] = array[j];
      array[j] = temp;
      i++;
      j--;
    }
  }
  quickSort(array, left, j);
  quickSort(array, i, right);
}

使用快速排序算法

现在,我们可以使用快速排序算法来对一个数组进行排序。例如,我们可以使用以下代码来对一个包含数字的数组进行排序:

let array = [10, 7, 8, 9, 1, 5];
quickSort(array, 0, array.length - 1);
console.log(array); // 输出:[1, 5, 7, 8, 9, 10]

复杂度分析

快速排序的时间复杂度为O(n log n),其中n为要排序的数组的长度。在最坏的情况下,快速排序的时间复杂度为O(n^2)。

快速排序是一个非常高效的排序算法,它经常用于对大型数组进行排序。