算法分析與設(shè)計(jì)教學(xué)課件:Chapter 7 Quick Sort_第1頁
算法分析與設(shè)計(jì)教學(xué)課件:Chapter 7 Quick Sort_第2頁
算法分析與設(shè)計(jì)教學(xué)課件:Chapter 7 Quick Sort_第3頁
算法分析與設(shè)計(jì)教學(xué)課件:Chapter 7 Quick Sort_第4頁
算法分析與設(shè)計(jì)教學(xué)課件:Chapter 7 Quick Sort_第5頁
已閱讀5頁,還剩63頁未讀, 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論