如何对数组进行排序?
作者:互联网
我们有一个需要排序的数组:
let arr = [86, 24, 64, 48, 15, 30, 90, 49]
首先,定义一个参数为数组的快速排序函数。
var quickSort = function(arr) {
};
然后,检查数组中的元素个数,如果小于等于 1,则返回。
var quickSort = function(arr) {
if (arr.length <= 1) { return arr; }
};
接下来,选择枢轴,将其与原始数组分开,并定义两个空数组来存储两个子集。
var quickSort = function(arr) {
if (arr.length <= 1) { return arr; }
var pivotIndex = Math.floor(arr.length / 2) ;
var pivot = arr.splice(pivotIndex, 1)[0];
var left = [];
var right = [];
};
然后,开始遍历数组,小于主元的元素放入左子集中,大于主元的元素放入右子集中。
var quickSort = function(arr) {
if (arr.length <= 1) { return arr; }
var pivotIndex = Math.floor(arr.length / 2) ;
var pivot = arr.splice(pivotIndex, 1)[0];
var left = [];
var right = [];
for (var i = 0; i < arr.length; i++){
if (arr[i] < pivot) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
};
最后,通过使用递归重复这个过程,得到排序后的数组。
var quickSort = function(arr) {
if (arr.length <= 1) { return arr; }
var pivotIndex = Math.floor(arr.length / 2);
var pivot = arr.splice(pivotIndex, 1)[0];
var left = [];
var right = [];
for (var 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));
};
用法:
标签:arr,right,quickSort,如何,length,数组,var,pivot,排序 来源: https://www.cnblogs.com/PotatosMe/p/16370832.html