JS:快速排序法

/* 快速排序是对冒泡排序的一种改进,

第一趟排序时将数据分成两部分,

一部分比另一部分的所有数据都要小。

然后递归调用,在两边都实行快速排序。*/

// 定义一个函数,它的参数是一个数组

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

}

你可能感兴趣的:(JS)