



下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第圖解Java經(jīng)典算法快速排序的原理與實現(xiàn)目錄快速排序算法原理圖解Java代碼實現(xiàn)算法分析
快速排序
通過一趟排序?qū)⒋旁胤殖瑟毩⒌膬刹糠?,其中一部分為比基?zhǔn)數(shù)小的元素,另一部分則是比基準(zhǔn)數(shù)大的元素。然后對這兩部分元素再按照前面的算法進(jìn)行排序,直到每一部分的元素都只剩下一個。
本質(zhì)上來看,快速排序應(yīng)該算是在冒泡排序基礎(chǔ)上的遞歸分治法。
算法原理
從數(shù)列中挑出一個元素作為基準(zhǔn)點重新排序數(shù)列,所有元素比基準(zhǔn)值小的擺放在基準(zhǔn)前面,所有元素比基準(zhǔn)值大的擺在基準(zhǔn)的后面然后基準(zhǔn)值左右兩邊,重復(fù)上述步驟通過遞歸把基準(zhǔn)值元素左右兩側(cè)的數(shù)組排序,排完之后,整個數(shù)組就排序完成了
圖解
問題描述:
給定一個無序排列的數(shù)組nums,使其能夠按照有序輸出
示例:
輸入:nums=[4,3,1,2,9,6],
輸出:nums=[1,2,3,4,6,9]
圖解如下:
Java代碼實現(xiàn)
核心代碼
publicclassQuickSort{
//比較v是否小于w
publicstaticbooleanless(Comparablev,Comparablew){
returnpareTo(w)
//數(shù)組元素交換位置
privatestaticvoidswap(Comparable[]a,inti,intj){
Comparabletemp;
temp=a[i];
a[i]=a[j];
a[j]=temp;
//排序
publicstaticvoidsort(Comparable[]a){
intl=0;
inth=a.length-1;
sort(a,l,h);
privatestaticvoidsort(Comparable[]a,intl,inth){
if(h=l)return;
//對數(shù)組進(jìn)行分組(左右兩個數(shù)組)
//i表示分組之后基準(zhǔn)值的索引
inti=partition(a,l,h);
//讓左邊的數(shù)組有序
sort(a,l,i-1);
//讓有邊的數(shù)組有序
sort(a,i+1,h);
publicstaticintpartition(Comparable[]a,intl,inth){
//確定基準(zhǔn)值
Comparablekey=a[l];
//定義兩個指針
intleft=l;
intright=h+1;
//切分
while(true){
//從右向左掃描,移動right指針找一個比基準(zhǔn)值小的元素,找到就停止
while(less(key,a[--right])){
if(right==l)
break;
//從左向右掃描,移動left指針找一個比基準(zhǔn)值大的元素,找到就停止
while(less(a[++left],key)){
if(left==h)
break;
if(left=right){
break;
}else{
swap(a,left,right);
//交換基準(zhǔn)值
swap(a,l,right);
returnright;
}
publicclassQuickSortTest{
publicstaticvoidmain(String[]args){
Integer[]arr={3,1,2,4,9,6};
QuickSort.sort(arr);
System.out.println(Arrays.toString(arr));
//排序前:{3,1,2,4,9,6}
//排序后:{1,2,3,4,6,9}
運行結(jié)果:
算法分析
時間復(fù)雜度
快速排序的最佳情況就是每一次取到的元素都剛好平分整個數(shù)組,由于快速排序用到了遞歸調(diào)用,因此計算其時間復(fù)雜度也需要用到遞歸算法來計算。T[n]=2T[n/2]+f(n);此時時間復(fù)雜度是O(nlogn)。最壞的情況,則和冒泡排序一樣,每次比較都需要交換元素,此時時間復(fù)雜度是O(n^2)。
因此,快速排序的時間復(fù)雜度為:O(nlogn)。
空間復(fù)雜度
空間復(fù)雜度主要是遞歸造成
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T/CNCA 063-2024煤的真密度測定氦氣置換法
- T/TMAC 093-2024隧道工程玄武巖纖維噴射混凝土技術(shù)規(guī)范
- 2025年簡單個人蔬菜大棚承包合同7篇
- LED顯示屏戶外媒體廣告發(fā)布合同協(xié)議7篇
- 留學(xué)中介服務(wù)合同6篇
- 勞動合同臺賬模板勞動合同管理臺賬6篇
- 電力工程施工合同與電力工程施工承包合同5篇
- 理論聯(lián)系實際談一談你對高質(zhì)量發(fā)展的理解參考答案二
- 中小學(xué)生生理衛(wèi)生知識
- 文字、語音、圖象識別設(shè)備項目績效評估報告
- 患者發(fā)生過敏性休克應(yīng)急預(yù)案演練腳本模板
- 南京醫(yī)科大學(xué)招聘考試《綜合能力測試》真題及答案
- 封閉冷通道施工方案
- 2021年新高考全國1卷(含答案解析)
- 《觸不可及》影視鑒賞課件
- 認(rèn)知知覺障礙的作業(yè)治療概述(作業(yè)治療技術(shù)課件)
- 畢業(yè)論文與畢業(yè)設(shè)計指導(dǎo)課件
- 采購合同一般采購合同
- 形象管理(南開大學(xué))【超星爾雅學(xué)習(xí)通】章節(jié)答案
- 《鮮衣怒馬少年時 唐宋詩詞篇 全集 》讀書筆記PPT模板思維導(dǎo)圖下載
- 施工方案設(shè)計(宿舍樓裝修改造)
評論
0/150
提交評論