1. 程式人生 > >web前端面試題(十七)之陣列快速排序?

web前端面試題(十七)之陣列快速排序?

思路:
a)  在資料集之中,選擇一個元素作為"基準"(pivot)。
b)  所有小於"基準"的元素,都移到"基準"的左邊;
    所有大於"基準"的元素,都移到"基準"的右邊。 c) 對"基準"左邊和右邊的兩個子集, 不斷重複第一步和第二步, 直到所有子集只剩下一個元素為止。 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)); };