手寫數組快速排序

(1)在數據集之中,選擇一個元素作為”基準”。
(2)所有小于”基準”的元素,都移到”基準”的左邊;所有大于”基準”的元素,都移到”基準”的右邊。
(3)對”基準”左邊和右邊的兩個子集,不斷重復第一步和第二步,直到所有子集只剩下一個元素為止。

function sort(arr) {
  if (arr.length < 2) {
    return arr;
  } else {
    var arrLeft = [];
    var arrRight = [];
    var baseIndex = Math.floor(arr.length/2);
    var base = arr.splice(baseIndex,1)[0];
    for (var i=0; i<arr.length; i++) {
      if (arr[i] < base) {
        arrLeft.push(arr[i]);
      } else {
        arrRight.push(arr[i]);
      }
    }
  }
  return sort(arrLeft).concat([base],sort(arrRight));
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 注:本文是在看了兩篇大牛的博客后,通過整理供自己學習快速排序所做筆記,分享出來方便大家學習。如需進一步了解可以查看...
    跑者小越閱讀 567評論 0 4
  • 日本程序員norahiko,寫了一個排序算法的動畫演示,非常有趣。 排序算法(Sorting algorithm)...
    吾名無雙閱讀 945評論 0 1
  • 數組排序在日常編程中用到的其實還是比較多的,比如把一組數據按時間排序,按首字母排序,按大小排序等等,那么就讓我們一...
    一木_qintb閱讀 13,129評論 1 2
  • 數組排序在日常編程中用到的其實還是比較多的,比如把一組數據按時間排序,按首字母排序,按大小排序等等,那么就讓我們一...
    xueNoble閱讀 2,177評論 0 9
  • 買了彩鉛,試了下,覺得好難上色,而且色彩沒有想象中的深,不知道是不是沒有學習想關的知識!接下來還是繼續練黑白稿!一...
    顧小軸閱讀 101評論 0 0