亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

qsort、partition、第k小的數

系統 1929 0

qsort的每一趟中,選定pivot以后,partition的過程如下:

開始時,ptrLeft,ptrRight分別指向數組兩端;

*ptrLeft小于pivot時,向右走;*ptrRight大于pivot時,向左走;

ptrLeft和ptrRight都走不動的時候,交換對應的元素,繼續。

ptrLeft和ptrRight相遇的時候,結束這一趟,然后二分的對兩邊繼續qsort。

更新:這樣的做法需要處理各種特殊情況(略),因此更好的思路是:

partition 的時候,思路是:

1 ,將 pivot 放到序列末尾;

2 ,兩個指針 ptr_old_curr ptr_new_curr 從左向右掃描,如果 *ptr_old_curr <= pivot ,就交換到 ptr_new_curr 位置;換言之, ptr_new_curr 一直指向下一個位置;

3 ptr_old_curr 到達末尾后, ptr_new_curr 指向第一個大于 pivot 的位置,將 pivot 放回這個位置即可。

這樣的好處是:完全不需要判斷各種異常情況。 一個實現參見 http://www.cnblogs.com/qsort/archive/2011/08/30/2155923.html

?

查找第k小的數,可以利用qsort中的partition來一次去掉大概一半。

思想如下:Find(k, Left, Right)的時候,先選擇一個pivot,來Partition(Pivot, Left, Right)

之后,設Pivot所在位置為Middle,可知Pivot左側都比Pivot小,右側都比Pivot大。

如果左側有大于k個數,那么第k小的數肯定在左側,可以繼續Find(k, Left, Middle)

如果左側數字小于k個,那么第k小的數肯定在右側,而且是右側的第 (k - (Middle - Left + 1) )個數,可以繼續Find([k - (Middle - Left + 1)], Middle, Right)了。

qsort、partition、第k小的數


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产精品亚洲国产三区 | 在哪里可以看毛片 | 国产玖玖在线观看 | 欧美人与zoxxxx另类9 | 久久久久一 | 亚洲精品成人一区二区aⅴ 亚洲精品成人一区二区www | 爱爱视频天天看 | 国内精品免费一区二区观看 | 亚洲精品tv久久久久久久久久 | 亚洲欧美日韩高清一区二区一 | 日韩欧美亚洲每日更新网 | 九九福利影院 | 视频在线观看入口一二三2021 | 欧美福利精品福利视频在线观看 | 久久精品30 | 香蕉观看在线视频成人 | 久草视频官网 | 日本高清中文字幕一区二区三区 | 久久精品亚洲乱码伦伦中文 | 99精彩视频在线观看 | 性孕妇video国产中国 | 日本网站在线播放 | 精品国产一区二区三区不卡在线 | 国产成人夜间影院在线观看 | 美日韩视频 | 日本人一级毛片免费视频 | 看全色黄大色黄大片爽一下 | 国产精品成人不卡在线观看 | 欧美亚洲专区 | 国产精品免费大片 | 欧美高清理论片在线观看 | 高清黄色毛片 | 久久精品99久久香蕉国产色戒 | 国产免费一级精品视频 | 日日摸夜夜摸狠狠摸日日碰夜夜做 | 福利视频免费观看 | 人成精品视频三区二区一区 | 一级做a毛片免费视频 | 免费视频爱爱 | 国产婷婷一区二区三区 | 国产欧美日韩综合二区三区 |