快速排序的復習

快速排序的原理荡含,首先選取一個基點竖般,基點的位置隨意(一般選中間點或者開始位置為基點)甚垦。在這里我用js實現(xiàn)的是以數(shù)組的開始位置為起始點,然后規(guī)定兩個指針,一個位于數(shù)組的開始位置艰亮,一個位于數(shù)組的結束位置闭翩,先從后和基準值比較,比基準值大迄埃,則右指針減一男杈,反之,將右指針指向的值賦值給左指針调俘;開始從左和基準值比較,如果小于等于基準值旺垒,則左指針加一彩库,反之,將左指針指向的值賦值給右指針先蒋,直到兩個指針指向同一位置,則結束比較骇钦,此時會形成兩個區(qū)間,在基準值的左邊都是小于等于基準值的竞漾,在基準值的右邊都是大于基準值的眯搭,再分別對兩邊區(qū)間選取基準值,重復以上步驟业岁,直到區(qū)間只剩一個值結束排序鳞仙。

  1. 以數(shù)組的開始位置為起始點,用pivot表示笔时,用left表示數(shù)組的開始位置棍好,用right表示數(shù)組的結束位置;
  2. 先用right指針指向的值和pivot比較允耿,如果比pivot大借笙,則right減1;
  3. 當right指針指向的值小于等于pivot時,把right指針指向的值賦值給left指針较锡;
  4. 然后在用left指針指向的值和pivot比較业稼,如果小于等于pivot,則left加1蚂蕴;
  5. 當left指針指向的值大于pivot時低散,把left指針指向的值賦值給right指針;
  6. 直到left指針和right指針相遇,則把pivot值放在他們相遇位置掂墓;
  7. 然后把poivot左邊的數(shù)組和右邊的數(shù)組重復以上步驟谦纱;
  8. 直到區(qū)間只有一個值結束所有操作。
    下面是我根據(jù)自己的理解君编,寫的算法實現(xiàn)跨嘉,如有更好的可以一起分享哈~
var quicksort=function(arr){
          let len=arr.length;
          if(len<=1){return arr;}
          var mid = arr[0];//基準值
          var i=0,j=len-1;
          let flag=true; // true表示從右開始和基準值比較,false表示從左開始和基準值比較
          while(i!=j){
            if(flag){
              if(arr[j]>mid){
                j--;
              }else{
                arr[i]=arr[j];
                i++;
                flag=false
              }
            }else{
              if(arr[i]<=mid){
                i++;
              }else{
                arr[j]=arr[i];
                j--;
                flag=true
              }
            }
          }
          return quicksort(arr.slice(0,i)).concat([mid],quicksort(arr.slice(i+1)));
        }
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末吃嘿,一起剝皮案震驚了整個濱河市祠乃,隨后出現(xiàn)的幾起案子梦重,更是在濱河造成了極大的恐慌,老刑警劉巖亮瓷,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件琴拧,死亡現(xiàn)場離奇詭異,居然都是意外死亡嘱支,警方通過查閱死者的電腦和手機蚓胸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來除师,“玉大人沛膳,你說我怎么就攤上這事⊙淳郏” “怎么了锹安?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長倚舀。 經(jīng)常有香客問我叹哭,道長,這世上最難降的妖魔是什么痕貌? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任风罩,我火速辦了婚禮,結果婚禮上芯侥,老公的妹妹穿的比我還像新娘泊交。我一直安慰自己,他們只是感情好柱查,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布廓俭。 她就那樣靜靜地躺著,像睡著了一般唉工。 火紅的嫁衣襯著肌膚如雪研乒。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天淋硝,我揣著相機與錄音雹熬,去河邊找鬼。 笑死谣膳,一個胖子當著我的面吹牛竿报,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播继谚,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼烈菌,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起芽世,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤挚赊,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后济瓢,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體荠割,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年旺矾,在試婚紗的時候發(fā)現(xiàn)自己被綠了蔑鹦。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡箕宙,死狀恐怖举反,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情扒吁,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布室囊,位于F島的核電站雕崩,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏融撞。R本人自食惡果不足惜盼铁,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望尝偎。 院中可真熱鬧饶火,春花似錦、人聲如沸致扯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽抖僵。三九已至鲤看,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間耍群,已是汗流浹背义桂。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蹈垢,地道東北人慷吊。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像曹抬,于是被迫代替她去往敵國和親溉瓶。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 什么是快速排序穆咐? 摘自漫畫算法: 同冒泡排序一樣奕扣,快速排序也屬于交換排序冗疮,通過元素之間的比較和交換位置來達到排序的...
    花逝97閱讀 790評論 0 1
  • 以下文章來源于后端技術指南針 骤星,作者后端技術指南針 1.寫在前面 今天一起來學習一下:快速排序及其優(yōu)化 和 STL...
    立0911閱讀 408評論 0 0
  • 快速排序思想 快速排序號稱20世紀最偉大的十大算法之一妒穴,也是nlogn級別的排序算法洞焙,它的思想是類似冒泡排序吕朵,是一...
    g小志閱讀 323評論 0 1
  • 概念 快速排序?qū)儆诮粨Q排序绰垂,主要步驟是使用基準元素進行比較嗅榕,把小于基準元素的移動到一邊顺饮,大于基準元素的移動到另一邊...
    Johnson_木木閱讀 235評論 0 0
  • 夜鶯2517閱讀 127,712評論 1 9