快速排序

基本思想:

  1. 先選擇基準(一般選擇中間位置)
  2. 對數(shù)組剩下的元素進行遍歷,小于基準的放在基準左邊,大于基準的放在基準右邊
  3. 對左邊和右邊的元素重復(fù)調(diào)用前兩步,直到只剩下一個元素為止

特點:速度快

function quickSort(arr) {
  
  if (arr.length <= 1) {
    return arr;
  }
  
  var baseIndex = Math.floor(arr.length /2 );
  var base = arr.splice(baseIndex,1);
  
  var left = [];
  var right = [];
  
  for (var i = 0; i < arr.length; i ++) {
    if (arr[i] < base[0]) {
      left.push(arr[i]);
    } else {
      right.push(arr[i]);
    }
  }
  return quickSort(left).concat(base, quickSort(right));
}


var arr = [3, 2, 5, 7, 1, 4, 8];

var res = quickSort(arr);

console.log(res);  // [1, 2, 3, 4, 5, 7, 8]
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 數(shù)據(jù)結(jié)構(gòu)與算法——快速排序 快速排序,顧名思義,它速度很快,針對一般應(yīng)用中各種不同的輸入都要比其他排序算法快很多,...
    sunhaiyu閱讀 3,482評論 0 3
  • quicksort可以說是應(yīng)用最廣泛的排序算法之一,它的基本思想是分治法,選擇一個pivot(中軸點),將小于pi...
    黎景陽閱讀 558評論 0 1
  • 注:本文是在看了兩篇大牛的博客后,通過整理供自己學(xué)習(xí)快速排序所做筆記,分享出來方便大家學(xué)習(xí)。如需進一步了解可以查看...
    跑者小越閱讀 638評論 0 4
  • 標簽(空格分隔): 數(shù)據(jù)結(jié)構(gòu)與算法 原理: 對于任意一個無序數(shù)組,我們隨機的選一個元素作為基準元素(例如:數(shù)組中的...
    Sivin閱讀 13,290評論 9 15
  • 第四天的課程的主題是彈性,在老師講課過程中我心里就一直有個聲音“怎樣的計劃安排才叫彈性?”實在不懂。隨著課程的...
    柚子愛檸檬茶閱讀 374評論 0 0

友情鏈接更多精彩內(nèi)容