JS实现快速排序
in Master Pageviews
one day one game!
// 1.选第一个元素作为基准
var a = [2,15,5,63,2,4,57,35];
function quicksort(arr) {
if(arr.length === 0)
return [];
var left = [];
var right = [];
var pivot = arr[0];
for(var 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));
}
console.log(quicksort(a));
// 2.选中点元素作为基准
var quickSort = function(arr) {
if(arr.length <= 1) {return arr;}
var pivotIndex = Math.floor(arr.length / 2);
//从数组中删除基准元素(改变原始数组),返回被删除的数组[arr[pivotIndex]],
//并将数组中的元素赋给pivot;
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));
};
console.log(quickSort(a));
// 3.随机产生基准
var QuickSort = function(arr) {
if(arr.length <= 1) {return arr;}
let start=0;
let end = arr.length-1;
let pivotIndex = Math.floor(Math.random()*(end-start+1))+1;
// console.log(pivotIndex);
//从数组中删除基准元素(改变原始数组),返回被删除的数组[arr[pivotIndex]],
//并将数组中的元素赋给pivot;
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));
};
console.log(QuickSort(a));