日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

快速排序算法javascript实现

發布時間:2024/10/12 javascript 81 豆豆
生活随笔 收集整理的這篇文章主要介紹了 快速排序算法javascript实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

  • function quicksort(arr){
  •   function q(start,end){
  •     if(start>=end){return;}
  •     var pivot?= start,
  •     temp = arr[pivot],
  •     i = start+1;
  •     for(;i<=end;i++){
  •       if(arr[i]<temp){
  •         var s = arr.splice(i,1)[0];
  •         arr.splice(start,0,s);
  •         pivot++;
  •       }
  •     }
  •     q(start,pivot-1);
  •     q(pivot+1,end);
  •   }
  •   q(0,arr.length);
  •   return arr;
  • }
  • var arrs = [9,45,45,90,3,77,4,90];
  • var c = quicksort(arrs);
  • console.log(c);
  • ?

    第3行的if(start>=end){return;},以這樣的方式退出遞歸,我是這么考慮的。

    當子數組中剩兩項時,分兩種情況分析:

    (1)當子數組第一項(傳遞給參數start)比第二項(傳遞給參數end)小

      在函數q中先做了一遍調整,最后變量start指向第一項,變量pivot指向第一項,然后是:

      q(start,pivot-1);//此時start==pivot,故start>pivot-1,通過if(start>=end){return;}退出遞歸

      q(pivot+1,end);//此時pivot+1==end,同理退出遞歸

    (2)當第一項比第二項大

      在函數q中做一遍調整,最后變量start指向第一項,變量pivot指向第二項,然后:

      q(start,pivot-1);//此時start==pivot-1,退出遞歸

      q(pivot+1,end);//此時pivot+1>end;也退出遞歸

    轉載于:https://www.cnblogs.com/followBlade/p/4058301.html

    總結

    以上是生活随笔為你收集整理的快速排序算法javascript实现的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。