快排為什麼一定要重右邊開始?
今天剛好同事問了下,為什麼以前背的快排一定要從右邊開始?剛好也順便給大家做個總結。
其實快排沒有一定要重右邊開始,只是看你基數的位置,如果你基數選的是最左邊的。你一定要確保,你交換基礎的時候,保證那個數要小於基數。但是你重右邊開始,就無法保證了。
比如你有
2 1 4 9 首先左邊left 會 跑到 4這裡,這樣9也會到4.然後進行交換。顯然就出錯了。 肯定不可能 4 1 2 9 所以為什麼不能左邊開始。
當你從右邊開始的時候,就一定是可以保證 那個數一定是小於等於基數的, 比如 上面就會找到 1 就會 1 2 4 9 這樣2 歸位。
或者說最不濟的情況, 找不到小於基數的 。 比如 2 3 4 9 。 右邊開始,這樣也會定位到2的本身, 頂多這次交換是 2 和2 的交換。 2 3 4 9 。
明白了嗎 ? 主要就是從左邊開始,你不能保證你最後交換的那個數,是小於等於左邊的。
如果你硬是要從左邊開始,那麼你的基數就選右邊的把 。
相關推薦
快排為什麼一定要重右邊開始?
今天剛好同事問了下,為什麼以前背的快排一定要從右邊開始?剛好也順便給大家做個總結。 其實快排沒有一定要重右邊開始,只是看你基數的位置,如果你基數選的是最左邊的。你一定要確保,你交換基礎的時候,保證那個數要小於基數。但是你重右邊開始,就無法保證了。 比如你有
快速排序法為什麼一定要從右邊開始
while(arr[j]>=temp&&i<j){ j--; } while(arr[i]<=temp&&i<j){ i++; } 這裡兩個while的順序是不能改變的,想一想: 假設對如下進行排
ubuntu安裝QQ 一定要重啟!!!
.cn show mage art png .com xid linu ica 1.已經安裝好了! 2. http://www.linuxidc.com/Linux/2016-09/134923.htm 3. http://jingyan.baidu.com/arti
Spring Boot 修改靜態資源一定要重啟專案才會生效嗎?未必!
回顧熱部署 Spring Boot 中的熱部署相信大家都用過吧,只需要新增 spring-boot-devtools 依賴就可以輕鬆實現熱部署。Spring Boot 中熱部署最最關鍵的原理就是兩個不同的 classloader: base classloader restart classloader
《啊哈演算法》裡快排要從右開始的原因
書上的例子是從右開始的,還強調了幾次必須。為什麼一定要從右邊開始呢?讓我們來試試從左邊開始會怎樣~還是用了書上的例子:不過我們是從 i 向右走開始前面幾步的 i , j 換位沒出現什麼問題,圖片就不放出
怎樣建網站更快更省錢?這個優惠你一定要知道
免費自助建站 網站建設 怎麽建網站 講道理,凡科建站要放大招優惠促銷,這個時候不該歌舞升平把酒言歡原地托馬斯全旋式炸裂直沖雲霄與鞭炮齊鳴嗎?正經點,是時候讓大家出來解釋解釋這次凡科建站“勞動好時光”的主題優惠促銷活動。 一、成龍體 其實,第一次讓我參加凡
想要賺的快多狠,服裝人一定要學會這個!
供應鏈管理 服裝零售管理 數字化零售 (圖1)近幾年,SPA模式一詞,頻繁的出現在各大服裝企業老板的案頭,也成為鞋服行業大佬們聚會時最常見的話題。SPA模式究竟是什麽東西呢,乃至於服裝品牌公司的最高層都那麽關心? SPA(Specialty retailer of Private label Apparel)
周鴻祎在360新員工入職培訓上的講話(他們都是太聰明,把自己混失敗了。大家一定要記住,混日子就是在糜費自己的時間。假設你不喜歡360,你一定要盡快換,盡快找到自己喜歡的事情)
基礎 足夠 速度 content 美麗 人力資源 什麽 畢業生 畢業 摘要: 我想給新入職的同事講一講我的希冀,再提幾個建議。我這團體喜歡說真話,不喜歡說美麗話,由於美麗話沒用。但說真話,大家能夠不愛聽。 周鴻祎在360新員工入職培訓上的講話 我想給新入職的
要想學好Java編程,構造器、方法重載、this關鍵字、垃圾回收機制,這4關一定要過!
社會 tor 沒有 type 遇到 一個 結果 回收 爆笑 有人說,你應該關註時事、財經,甚至流行的電影、電視劇,才有可能趁著熱點寫出爆文;有人說,你別再寫“無聊”的技術文了,因為程序員的圈子真的很小,即便是像鴻洋那樣的招牌大牛,文章是那麽的幹貨,瀏覽量有多少?不到萬吧;有
還不會vs快捷鍵的快進來,最全vs快捷鍵,非常常用,和我都是小的白的一定要看看
ctrl±(shift+ctrl±):移動游標到上次位置或相反,比如定位一個函式,轉到函式定義後想回到函式使用處,則用ctrl±,若又想回到函式定義處則可以按shift+ctrl± F12:Go to Definition,到變數或函式定義的地方,如變數宣告處,
快速排序我每3天手寫一次快排--當你說遲了的時候,要謹慎!!!
快速排序,簡單的一麻批 首先分享一個網站:http://developer.51cto.com/art/201403/430986.htm 老哥賊牛逼,讓我對快排記憶中抹都抹不去。 個人理解快速排序: 1.讓找到key在陣列中的位置,讓左邊的數小於key(或者大
高效陣列去重,陣列快排方法
陣列去重ES5的方法 function unique(){ var res = []; var json = {}; for(var i = 0; i < this.length; i
NYOJ 8 一種排序 快排 去重
原題連結 思路:用節點表示長方形的編號,長寬和tag(用來去重的標記,預設為1,重複的標記為0) 難點:先按編號快排,再去重. 附ac程式碼 #include <stdio.h> #include <stdlib.h> struct Node{
成年人的崩潰從缺錢開始?掀開了那塊遮羞布,看清了真相,既沒錢,又無能(年輕人不愛錢是很可怕的事情,一定要愛錢,尊重錢,因為錢最公平)
正是 笑話 微信 說過 好的 的人 音頻 上下 成長 蘇明玉憑啥那麽拽?成年人的底氣,是錢給的!(組圖) 王爾德說過一句話:在我年輕的時候,曾以為金錢是世界上最重要的東西。現在我老了,才知道的確如此。 最近電視劇《都挺好》太火了,我也看了幾集。 姚晨飾演的蘇明玉,生在
快排的遞歸和非遞歸
快排 常用的快排都是用遞歸寫的,因為比較簡單,但是可以用棧來實現非遞歸的快排。第一種是遞歸的快排#include<stdio.h> #include <stdlib.h> #include <time.h> int quick(int a[],int i ,int j
【分治】簡單說說快排
ostream stdout ++i rand() oid fclose cnblogs clu 快排 說到快拍,大家都會首先想到sort函數這個神奇的東西 但是,我們總得知道快拍主要用的分治思想 所以就說一說快拍吧 首先是分類 快拍主要有三種方式: 一、以第一個數為基準排
接口測試,添加請求頭的時候,大小寫一定要正確
data 應該 一個 pty enc 格式 content 註意 log 今天同事碰到了一個問題,就是他用robot framework+requests寫接口測試用例的時候,post一個json數據的時候,發送出去的數據一直是data=<empty>,明明有數
程序員為什麽一定要用Linux
linux程序員大多數人引薦Linux,基本上都會說Linux讓你更高效、更優異。然而工具只是工具。然而工具只是工具。然而工具只是工具。優異程序員和不優異程序員的差異首先是態度上的差異。他們有自個的理想,考慮許多,不管是項目開端之前還是在項目進行中,項目完結以後也會進行總結。他們對待疑問對比謹慎,考慮對比全部
有個無附加要求,噉就系你一定要放咗啲
成功 一個 一聲 sha 結果 談判 未能 準備 地獄 豬妖頭頭思忖咗良久,咬咬牙說道:“得,咁就暫且相信你一次,若是失敗咗,你就得滾出白石山,永遠唔準踏進呢度半步。”“易話為嘅。”蓮歌笑住回味。「不過,我重有個無附加要求,噉就系你一定要放咗啲人族。”蓮歌睇豬妖頭頭,講出咗
快排和並歸
時空 family blue span 第一個 把他 長度 一個 ++ 1,2,二路並歸排序:設數組a中存放有n個數據元素,初始把他們看成是n個長度為1的有序子數組,然後從第一個子數組開始把相鄰的子數組兩兩合並,得到n/2的整數上界個長度為2的有序子數組,當n為基數時最後一