快速排序

一.什么叫快速排序?

 通過一趟排序?qū)⒁判虻臄?shù)據(jù)分割成獨(dú)立的兩部分,其中一部分的所有數(shù)據(jù)都比另外一部分的所有數(shù)據(jù)都要小,然后再按此方法對(duì)這兩部分?jǐn)?shù)據(jù)分別進(jìn)行快速排序,整個(gè)排序過程可以遞歸進(jìn)行,以此達(dá)到整個(gè)數(shù)據(jù)變成有序序列。

二.排序步驟:

對(duì)下列數(shù)組進(jìn)行排序:(22,36,4,51,36,8,44,5,62,14,5,6,32,12)

1.)找出一個(gè)元素作為基準(zhǔn)(理論上可以隨便找一個(gè))定義兩個(gè)指針begn和end.
  int x=begn;
  int y=end;
  int s=a[begn];
找第一個(gè)元素作為基準(zhǔn)
2.)排序?qū)崿F(xiàn):
1. 以 22 位基準(zhǔn) ;
2. 在begn位置開始往上找大于等于22的數(shù)字;
3.在end處開始往下找小于等于22的數(shù)字;
4.找到后交換位置

        while (a[x]<s){
            x++;
        }
        while(a[y]>s){
            y--;
        }
         if(y>=x){
            int tem=a[x];
            a[x]=a[y];
            a[y]=tem;
            x++;
            y--;
        }
第一趟執(zhí)行結(jié)果:
第一趟執(zhí)行結(jié)果
3.)最后重復(fù)以上操作調(diào)用遞歸算法:

        if(begn<y){
            Qucli(a,begn,y);
        }
        if(end>x){
            Qucli(a,x,end);
        }

三.完整程序:


public class QuickSort {
  //快速排序
    public static void Qucli(int []a,int begn,int end){
        int x=begn;
        int y=end;
        int s=a[begn];
        while(y>=x){
            while (a[x]<s){
                x++;
            }
            while(a[y]>s){
                y--;
            }
        if(y>=x){
            
            int tem=a[x];
            a[x]=a[y];
            a[y]=tem;
            x++;
            y--;
        }
        
        if(begn<y){
            Qucli(a,begn,y);
        }
        if(end>x){
            Qucli(a,x,end);
        }
    } 
    }
    public static void main(String[] args) {
        int a[]={22,36,4,51,36,8,44,5,62,14,5,6,32,12};
        Qucli(a,0,a.length-1);
        for(int ss:a){
            System.out.print(ss+"  ");
        }
    }

}

結(jié)果展示:
快速排序
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 版本記錄 前言 將數(shù)據(jù)結(jié)構(gòu)和算法比作計(jì)算機(jī)的基石毫不為過,追求程序的高效是每一個(gè)軟件工程師的夢(mèng)想。下面就是我對(duì)算法...
    刀客傳奇閱讀 5,384評(píng)論 4 72
  • 快速排序(Quicksort)是對(duì)冒泡排序的一種改進(jìn)。 快速排序由C. A. R. Hoare在1962年提出。它...
    Aroli閱讀 2,160評(píng)論 0 6
  • 1.快速排序 快速排序每趟選擇一個(gè)基準(zhǔn)元素,用基準(zhǔn)元素將序列劃分成兩部分,所有比基準(zhǔn)值小的元素?cái)[放在基準(zhǔn)前面,所有...
    游戲開發(fā)小Y閱讀 291評(píng)論 0 0
  • 一映入眼簾的“寒門”兩個(gè)字,腦海中就會(huì)想起網(wǎng)絡(luò)上熱議的那篇文章《寒門難再出貴子》這個(gè)話題。這篇文章一爆而紅,引發(fā)了...
    那徐公子閱讀 320評(píng)論 0 0
  • 我喜歡冬天寒風(fēng)刺骨的感覺。它讓我痛徹心扉!親臨世間的冷漠。重新梳妝自己嫵媚的心靈!!
    alll1314閱讀 248評(píng)論 0 1

友情鏈接更多精彩內(nèi)容