版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
T&RTeamofAlgorithmDesignCollegeofComputerScienceandEngineering,CQUAlgorithmAnalysis&Design
IntroductiontoAlgorithmChapter7:QuickSortOutline6.1BasicQuickSort6.2ImprovingQuickSortwithMedians7.1BasicQuickSortQUICKSORTWehaveseentwoO(nlogn)sortingalgorithms:MergesortwhichisfasterbutrequiresmorememoryHeapsortwhichallowsin-placesortingWewillnowlookatarecursivealgorithmwhichmaybedonealmostinplaceandusuallyfasterthanheapsortUseanobjectinthearray(apivot)todividethetwoAveragecase: O(nlogn)timeandO(logn)memoryWorstcase: O(n2)timeandO(n)memoryQUICKSORTMergesortsplitsthearraysub-listsandsortsthemThelargerproblemissplitintotwosub-problemsbasedonlocationinthearrayConsiderthefollowingalternative:ChoseanobjectinthearrayandpartitiontheremainingobjectsintotwogroupsrelativetothechosenentryQUICKSORTForexample,givenanunsortedarray:Wecanselectthelastentry,4,andsorttheremainingentriesintotwogroups,thoselessthan4andthosegreaterthan4:Notethat4
isnowinthecorrectlocationoncethelistissortedProceedbyapplyingthealgorithmtothefirst3andlast4entries2871356421347568ASimpleImplementation–PARTITIONPARTITION(A,
p,
r) x←A[r] i←p-1
FOR
j←pTO
r-1
IF
A[j]≤x
THENi←i+1 exchangeA[i]?A[j] exchangeA[i+1]?A[r]
RETURN
i+1ASimpleImplementation–PARTITIONA[p,…,i]:knowntobe≤pivotA[i+1,…,j-1]:knowntobe>pivotA[j…r-1]:notyetexaminedA[r]:pivotASimpleImplementation–PARTITIONTheoperationofPartitiononthesamplearray.Lightlyshadedarrayelementsareallwithvaluesnogreaterthanx(thepivot).Heavilyshadedarrayelementsareallwithvaluesgreaterthanx.ASimpleImplementation–QUICKSORTQUICKSORT(A,p,r)
IFp<r
THENq←PARTITION(A,p,r)
QUICKSORT(A,p,q–1)
QUICKSORT(A,q+1,r)Initialcall:QUICKSORT(A,1,n)Run-timeAnalysisInthebestcase,thelistwillbesplitintotwoapproximatelyequalsub-lists,andthus,theruntimecouldbeverysimilartothatofmergesort:Q(nlogn)RecursiveTreeoftheBestCaseArecursiontreeforquicksortinwhichthepartitionalwaysbalancesthetwosidesofthepartitionequally.TheresultingrunningtimeisQ(nlogn)Thequestionis:WHAThappensifwedon’tgetthatlucky?Worst-caseScenarioSupposewechoosethesmallestelementasourpivotandwetryorderingasortedlist:Using2,wepartitiontheoriginallistintoWestillhavetosortalistofsizen–1TheruntimeisT(n)=T(n–1)+Q(n)=Q(n2)Thus,theruntimedropsfromQ(nlogn)toQ(n2)80389584661079226879612438132803895846610792687961243813RecursiveTreeoftheWorstCaseArecursiontreeforquicksortinwhichthepartitionalwaysputsonlyasingleelementononesideofthepartition.TheresultingrunningtimeisQ(n2)RecursiveTreeoftheBalancedCaseWhatifthesplitisalways1:9?T(n)=T(9n/10)+T(n/10)+Q(n)Whatisthesolutiontothisrecurrence?RecursiveTreeoftheBalancedCaseArecursiontreeforquicksortinwhichpartitionalwaysproducesa9-to-1split,yieldingarunningtimeof
Q(nlogn)7.2ImprovingQuickSortwithMediansAlternateStrategyOurgoalistochoosethemedianelementinthelistasourpivot:Unfortunately,it’sDIFFICULTtofindAlternatestrategy:takethemedianofasubsetofentriesForexample,takethemedianofthefirst,middle,andlastentries8038958466107922687961243813ChoosetheMedian-of-ThreeItisdifficulttofindthemediansoconsideranotherstrategy:Choosethemedianofthefirst,middle,andlastentriesinthelistThiswillusuallygiveamuchbetterapproximationoftheactualmedianChoosetheMedian-of-ThreeSortingtheelementsbasedon44resultsintwosub-lists,eachofwhichmustbesorted(again,usingquicksort)Weselectthe26topartitionthefirstsub-list:and81topartitionthesecondsub-list:ChoosetheMedian-of-Three
ImprovedQuickSortExampleFirst,weexaminethefirst,middle,andlastentriesofthefulllistThespanbelowwillindicatewhichlistwearecurrentlysortingImprovedQuickSortExampleWeselect57tobeourpivotWemove24intothefirstlocationImprovedQuickSortExampleStartingatthe2ndand2nd-lastlocations:wesearchforwardtillwefind
70>57wesearchbackwardtillwefind 49<57ImprovedQuickSortExampleWeswap70and49,placingtheminorderwithrespecttoeachotherImprovedQuickSortExampleWesearchforwarduntilwefind
97>57Wesearchbackwarduntilwefind 16<57ImprovedQuickSortExampleWeswap16and97whicharenowinorderwithrespecttoeachotherImprovedQuickSortExampleWesearchforwardtillwefind 63>57Wesearchbackwardtillwefind 55<57ImprovedQuickSortExampleWeswap63and55ImprovedQuickSortExampleWesearchforwardtillwefind 85>57Wesearchbackwardtillwefind 36<57ImprovedQuickSortExampleWeswap85and36,placingtheminorderwithrespecttoeachotherImprovedQuickSortExampleWesearchforwarduntilwefind 68>57Wesearchbackwarduntilwefind 9<57ImprovedQuickSortExampleWeswap68and9ImprovedQuickSortExampleWesearchforwarduntilwefind 76>57Wesearchbackwarduntilwefind 9<57Theindicesareoutoforder,sowestopImprovedQuickSortExampleWemovethelargerindexeditemtothevacancyattheendofthearrayWefilltheemptylocationwiththepivot,57ThepivotisnowinthecorrectlocationImprovedQuickSortExampleWewillnowrecursivelycallquicksortonthefirsthalfofthelistWhenwearefinished,allentries<57willbesortedImprovedQuickSortExampleWeexaminethefirst,middle,andlastelementsofthissublistImprovedQuickSortExampleWechoose24tobeourpivotWemove9intothefirstlocationinthissub-listImprovedQuickSortExampleWesearchforwardtillwefind 49>24Wesearchbackwardtillwefind 21<24ImprovedQuickSortExampleWeswap49and21,placingtheminorderwithrespecttoeachotherWesearchforwardtillwefind 38>24Wesearchbackwardtillwefind 16<24Theindicesarereversed,sowestopImprovedQuickSortExampleImprovedQuickSortExampleWemove38tothevacantlocationandmovethepivot24intothepreviouslocationof3824isnowinthecorrectlocationImprovedQuickSortExampleWewillnowrecursivelycallquicksortontheleftandrighthalvesofthoseentrieswhichare<57ImprovedQuickSortExampleThefirstpartitionhasthreeentries,sowesortitusinginsertionsortImprovedQuickSortExampleThesecondpartitionalsohasonlyfourentries,soagain,weuseinsertionsortImprovedQuickSortExampleFirstweexaminethefirst,middle,andlastentriesofthesub-listImprovedQuickSortExampleWechoose74tobeourpivotWemove76tothevacancyleftby74ImprovedQuickSortExampleWesearchforwardtillwefind 81>74Wesearchbackwardtillwefind 70<74ImprovedQuickSortExampleWeswap70and84placingtheminorderImprovedQuickSortExampleWesearchforwardtillwefind 85>74Wesearchbackwardtillwefind 61<74ImprovedQuickSortExampleWeswap85and61placingtheminorderImprovedQuickSortExampleWesearchforwardtillwefind 79>74Wesearchbackwardtillwefind 63<74Theindicesarereversed,sowestopImprovedQuickSortExampleWemove79tothevacantlocationandmovethepivot74intopreviouslocationof7974
isnowinthecorrectlocationImprovedQuickSortExampleWesorttheleftsub-listfirstIthas4elements,sowesimplyuseinsertionsortHavingsortedthefourelements,wefocusontheremainingsub-listofsevenentriesImprovedQuickSortExampleImprovedQuickSortExampleTosortthenextsub-list,weexaminethefirst,middle,andlastentriesImprovedQuickSortExampleWeselect79asourpivotandmove:76intothelowestposition85intothehighestpositionImprovedQuickSortExampleWesearchforwardtillwefind 85>79Wesearchbackwardtillwefind 77<79ImprovedQuickSortExampleWeswap85and77,placingtheminorderImprovedQuickSortExampleWesearchforwardtillwefind 97>79Wesearchbackwardtillwefind 77<79Theindicesarereversed,sowestopImprovedQuickSortExampleFinally,wemove97to
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 德國民法典的題目及答案
- 運(yùn)輸隊(duì)班組工作例會(huì)制度
- 車間照明標(biāo)準(zhǔn)制度
- 數(shù)學(xué)百科知識(shí)競(jìng)賽
- 2026年及未來5年市場(chǎng)數(shù)據(jù)中國工業(yè)地產(chǎn)物業(yè)管理行業(yè)市場(chǎng)深度研究及投資戰(zhàn)略規(guī)劃報(bào)告
- 2025年-中遠(yuǎn)海運(yùn)集團(tuán)集中筆試及答案
- 2025年松原市事業(yè)單位應(yīng)聘考試及答案
- 2025年高校行政的英文筆試及答案
- 2025年山西專職輔導(dǎo)員筆試及答案
- 2025年西醫(yī)執(zhí)業(yè)醫(yī)考試筆試及答案
- 新高考數(shù)學(xué)之圓錐曲線綜合講義第26講外接圓問題(原卷版+解析)
- 亞馬遜全球開店:2024亞馬遜日本機(jī)會(huì)品類動(dòng)向調(diào)查報(bào)告-床上用品
- 中藥湯劑煎煮技術(shù)規(guī)范-公示稿
- 水岸·琉璃園-山東淄博留仙湖公園景觀設(shè)計(jì)
- 新版出口報(bào)關(guān)單模板
- 微型課題研究的過程與方法課件
- 藥學(xué)導(dǎo)論緒論-課件
- 14K118 空調(diào)通風(fēng)管道的加固
- 加油站財(cái)務(wù)管理制度細(xì)則
- 真倚天屠龍記劇情任務(wù)詳細(xì)攻略武功沖穴步驟
- 《內(nèi)經(jīng)選讀》ppt精品課程課件講義
評(píng)論
0/150
提交評(píng)論