用js实现递归的快速排序
时间: 2024-05-25 09:01:33 浏览: 59
function quickSort(arr) {
// 如果数组长度小于等于1,直接返回
if (arr.length <= 1) {
return arr;
}
// 取数组中间的一个数作为基准值
const pivotIndex = Math.floor(arr.length / 2);
const pivot = arr.splice(pivotIndex, 1)[0];
// 定义左右两个数组
const left = [];
const right = [];
// 遍历数组,将小于基准值的放入左数组,大于等于基准值的放入右数组
for (let i = 0; i < arr.length; i++) {
if (arr[i] < pivot) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
// 递归调用,对左右数组进行排序
return quickSort(left).concat([pivot], quickSort(right));
}
// 示例
const arr = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5];
const sortedArr = quickSort(arr);
console.log(sortedArr); // [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
相关问题
用js实现快速排序算法
### 回答1:
快速排序是一种分治算法,通常用于对数组进行排序。它的基本思想是:选择一个基准元素,通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
下面是用 JavaScript 实现快速排序的示例代码:
```
function quickSort(arr) {
if (arr.length <= 1) {
return arr;
}
const pivotIndex = Math.floor(arr.length / 2);
const pivot = arr.splice(pivotIndex, 1)[0];
const left = [];
const right = [];
for (let i = 0; i < arr.length; i++) {
if (arr[i] < pivot) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
return quickSort(left).concat([pivot], quickSort(right));
}
```
在这段代码中,我们首先判断数组的长度是否小于等于 1,如果是,则直接返回数组,否则继续执行排序。接下来,我们计算出数组的中间索引,并使用 `splice` 方法将这个元素从数组中取出,作为基准元素。然后我们遍历数组,将比基准元素小的元素放到左边的数组中,将比基准
### 回答2:
快速排序是一种常用的排序算法,通过分治的思想对数组进行排序。使用JavaScript实现快速排序的步骤如下:
1. 选择一个基准元素(通常选择数组的第一个元素)。
2. 将数组分成两个子数组,小于基准元素的放在左边,大于基准元素的放在右边。
3. 对左右子数组分别进行递归调用快速排序。
4. 合并左右子数组和基准元素,得到排序后的数组。
下面是使用JavaScript实现快速排序的代码:
```javascript
function quickSort(arr) {
// 结束条件:当数组的长度小于等于1时,无需再进行排序
if (arr.length <= 1) {
return arr;
}
// 选择一个基准元素
const pivot = arr[0];
const left = [];
const right = [];
// 将数组按照基准元素分成左右两个子数组
for (let i = 1; i < arr.length; i++) {
if (arr[i] < pivot) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
// 对左右子数组进行递归调用快速排序,并合并左子数组、基准元素和右子数组
return quickSort(left).concat(pivot, quickSort(right));
}
// 测试代码
const arr = [5, 2, 7, 3, 9, 1];
const sortedArr = quickSort(arr);
console.log(sortedArr);
```
这段代码实现了快速排序算法,首先选择数组的第一个元素作为基准元素,然后将数组按照基准元素的大小分成左右两个子数组,再对左右子数组进行递归调用快速排序,最后合并左子数组、基准元素和右子数组,返回排序后的数组。
### 回答3:
快速排序是一种常用的排序算法,其基本思想是通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,然后再对这两部分记录进行排序,最终得到有序序列。
通过JavaScript实现快速排序算法的关键步骤如下:
1. 确定基准值:选取数组中任意一个元素作为基准值,通常选择第一个元素或最后一个元素。此处以选择第一个元素为例。
2. 分割数组:遍历数组,将小于基准值的元素放在左边,大于基准值的元素放在右边,相等的元素可以放在任意一边。
3. 递归排序:将左边和右边的子数组分别进行快速排序,直到每个子数组只含有一个元素。
4. 合并数组:将排好序的左边数组、基准值和排好序的右边数组依次合并起来,即得到最终的排序结果。
下面是一个使用JavaScript实现快速排序算法的示例代码:
```javascript
function quickSort(arr) {
if (arr.length <= 1) {
return arr;
}
const pivotIndex = Math.floor(arr.length / 2);
const pivot = arr.splice(pivotIndex, 1)[0];
const left = [];
const right = [];
for (let i = 0; i < arr.length; i++) {
if (arr[i] < pivot) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
return quickSort(left).concat([pivot], quickSort(right));
}
const array = [5, 3, 1, 2, 4];
const sortedArray = quickSort(array);
console.log(sortedArray); // [1, 2, 3, 4, 5]
```
以上是一个简单的使用JavaScript实现快速排序算法的示例,通过递归调用实现对子数组的排序,最终得到整个数组的排序结果。
用js实现快速排序方法
好的,以下是使用JavaScript实现快速排序的方法:
```javascript
function quickSort(arr) {
if (arr.length <= 1) {
return arr;
}
const pivotIndex = Math.floor(arr.length / 2);
const pivot = arr[pivotIndex];
const left = [];
const right = [];
for (let i = 0; i < arr.length; i++) {
if (i === pivotIndex) {
continue;
}
if (arr[i] < pivot) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
return [...quickSort(left), pivot, ...quickSort(right)];
}
```
快速排序是一种常用的排序算法,它的基本思想是通过不断的选取一个“基准数”,将待排序的数据分成两个部分,其中一部分的数据都比基准数小,另一部分的数据都比基准数大,然后递归地对两部分数据进行排序,最终得到排序好的数据序列。在上面的代码中,我们首先判断输入数组的长度是否小于等于1,如果是的话,直接返回该数组即可。接着,我们选取数组中间的一个元素作为基准数,然后将数组分成两部分,一部分是比基准数小的元素,一部分是比基准数大的元素。最后,我们递归地对左右两部分进行排序,并将结果合并成一个新的数组返回。
阅读全文