用js写一个快速排序算法
时间: 2023-09-04 22:03:52 浏览: 70
### 回答1:
我可以提供一个示例:function quickSort(arr) {
if (arr.length <= 1) {
return arr;
}
let pivot = arr[arr.length - 1];
let left = [];
let right = [];
for (let i = 0; i < arr.length - 1; i++) {
if (arr[i] < pivot) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
return quickSort(left).concat([pivot], quickSort(right));
}
### 回答2:
下面是使用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)];
}
// 使用示例
const arr = [5, 2, 8, 4, 9, 1];
const sortedArr = quickSort(arr);
console.log(sortedArr);
```
快速排序是一种常用的排序算法,其原理是通过选择一个基准元素,将数组划分为两个子数组,使得左子数组的所有元素都小于基准元素,右子数组的所有元素都大于基准元素。通过递归地对左右子数组进行排序,最终得到排好序的数组。这个算法的时间复杂度为O(nlogn)。
### 回答3:
快速排序是一种常用的排序算法,通过选取一个基准元素,将待排序的数组分为比基准小和比基准大的两部分,然后对这两部分分别进行快速排序,最后将结果合并起来即可得到有序数组。
下面是使用JavaScript编写的快速排序算法代码:
```javascript
function quickSort(arr) {
if (arr.length <= 1) {
return arr;
}
// 选取基准元素
let pivot = arr[0];
let left = [];
let right = [];
// 根据基准元素将数组分为两部分
for (let i = 1, len = arr.length; i < len; i++) {
if (arr[i] < pivot) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
// 递归对左右两部分进行快速排序,并将结果合并
return quickSort(left).concat(pivot, quickSort(right));
}
// 测试代码
let arr = [6, 5, 3, 1, 8, 7, 2, 4];
let sortedArr = quickSort(arr);
console.log(sortedArr);
```
以上代码首先判断数组长度,如果数组长度小于等于1,则直接返回原数组,因为只有一个元素或者没有元素的数组已经是有序的。
然后选择数组的第一个元素作为基准元素(也可以选择其他元素),创建一个左侧数组和一个右侧数组。
遍历原数组的每个元素,如果元素小于基准元素,则将其放入左侧数组,否则放入右侧数组。
接下来,使用递归对左侧和右侧数组进行快速排序,并将结果和基准元素合并成一个新数组。最终得到排好序的数组。