快速排序

Java中實(shí)現(xiàn)

1.1、 函數(shù)編寫

  void QuickSort(int[] a) {
        Sort(a, 0, a.length - 1);
    }

  void Sort(int[] a, int low, int high) {
        int pivot;
        if (low < high) {
            pivot = Partten(a, low, high);
            Sort(a, low, pivot - 1);
            Sort(a, pivot + 1, high);
        }
    }

  int Partten(int[] a, int low, int high) {
        int pivotkey;
        pivotkey = a[low];
        while (low < high) {
            while (low < high && pivotkey <= a[high])
                high--;
            swap(a, low, high);
            while (low < high && pivotkey >= a[low])
                low++;
            swap(a, low, high);
        }
        return low;
    }

//交換排序數(shù)組中的倆個(gè)元素
    void swap(int[] a, int low, int high) {
        int temp = a[low];
        a[low] = a[high];
        a[high] = temp;
    }

1.2、 測(cè)試

        int[] a = {20, 40, 50, 30, 10, 100, 90};
        quickSort sort = new quickSort();
        sort.QuickSort(a);
        for (int i : a) {
            System.out.print(i+"\t");
        }

1.3场绿、 測(cè)試結(jié)果

image.png

C++中實(shí)現(xiàn)

2.1、 函數(shù)編寫

#include <iostream>
#define MAXSIZE 10000  /* 用于要排序數(shù)組個(gè)數(shù)最大值嫉入,可根據(jù)需要修改 */
typedef struct
{
    int r[MAXSIZE+1];   /* 用于存儲(chǔ)要排序數(shù)組焰盗,r[0]用作哨兵或臨時(shí)變量 */
    int length;         /* 用于記錄順序表的長(zhǎng)度 */
}SqList;
//交換L中數(shù)組r的下標(biāo)為i和j的值 
void swap(SqList *L,int i,int j)
{
    int temp=L->r[i];
    L->r[i]=L->r[j];
    L->r[j]=temp;
}
//自定義sqList輸出函數(shù)
void print(SqList L)
{
    int i;
    for(i=1;i<L.length;i++)
        printf("%d,",L.r[i]);
    printf("%d",L.r[i]);
    printf("\n");
}

/* 對(duì)順序表L作快速排序 */
void QuickSort(SqList *L)
{
    QSort(L,1,L->length);
}

/* 對(duì)順序表L中的子序列L->r[low..high]作快速排序 */
void QSort(SqList *L,int low,int high)
{
    int pivot;
    if(low<high)
    {
        pivot=Partition(L,low,high); /*  將L->r[low..high]一分為二,算出樞軸值pivot */
        QSort(L,low,pivot-1);       /*  對(duì)低子表遞歸排序 */
        QSort(L,pivot+1,high);      /*  對(duì)高子表遞歸排序 */
    }
}

/*求出sqList中咒林,樞軸元素的位置*/
int Partition(SqList *L,int low,int high)
{
    int pivotkey;
    pivotkey=L->r[low]; /* 用子表的第一個(gè)記錄作樞軸記錄 */
    while(low<high) /*  從表的兩端交替地向中間掃描 */
    {
        while(low<high&&L->r[high]>=pivotkey)
            high--;
        swap(L,low,high);/* 將比樞軸記錄小的記錄交換到低端 */
        while(low<high&&L->r[low]<=pivotkey)
            low++;
        swap(L,low,high);/* 將比樞軸記錄大的記錄交換到高端 */
    }
    return low; /* 返回樞軸所在位置 */
}

2.2熬拒、測(cè)試

int main() {
    int n = 7;
    int a[n] = {20, 30, 50, 40, 10, 90, 35};
    SqList list;
    for (int i = 0; i < n; ++i) {
        list.r[i] = a[i];
    }
    list.length = n;
    QuickSort(&list);
    print(list);
    return 0;
}

2.3、 測(cè)試結(jié)果

image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末映九,一起剝皮案震驚了整個(gè)濱河市梦湘,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌件甥,老刑警劉巖捌议,帶你破解...
    沈念sama閱讀 211,376評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異引有,居然都是意外死亡瓣颅,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門譬正,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)宫补,“玉大人,你說(shuō)我怎么就攤上這事曾我》叟拢” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 156,966評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵抒巢,是天一觀的道長(zhǎng)贫贝。 經(jīng)常有香客問(wèn)我,道長(zhǎng)蛉谜,這世上最難降的妖魔是什么稚晚? 我笑而不...
    開(kāi)封第一講書人閱讀 56,432評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮型诚,結(jié)果婚禮上客燕,老公的妹妹穿的比我還像新娘。我一直安慰自己狰贯,他們只是感情好也搓,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布赏廓。 她就那樣靜靜地躺著,像睡著了一般傍妒。 火紅的嫁衣襯著肌膚如雪楚昭。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 49,792評(píng)論 1 290
  • 那天拍顷,我揣著相機(jī)與錄音抚太,去河邊找鬼。 笑死昔案,一個(gè)胖子當(dāng)著我的面吹牛尿贫,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播踏揣,決...
    沈念sama閱讀 38,933評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼庆亡,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了捞稿?” 一聲冷哼從身側(cè)響起又谋,我...
    開(kāi)封第一講書人閱讀 37,701評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎娱局,沒(méi)想到半個(gè)月后彰亥,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,143評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡衰齐,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評(píng)論 2 327
  • 正文 我和宋清朗相戀三年任斋,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片耻涛。...
    茶點(diǎn)故事閱讀 38,626評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡废酷,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出抹缕,到底是詐尸還是另有隱情澈蟆,我是刑警寧澤,帶...
    沈念sama閱讀 34,292評(píng)論 4 329
  • 正文 年R本政府宣布卓研,位于F島的核電站趴俘,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏鉴分。R本人自食惡果不足惜哮幢,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評(píng)論 3 313
  • 文/蒙蒙 一带膀、第九天 我趴在偏房一處隱蔽的房頂上張望志珍。 院中可真熱鬧,春花似錦垛叨、人聲如沸伦糯。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)敛纲。三九已至喂击,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間淤翔,已是汗流浹背翰绊。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留旁壮,地道東北人监嗜。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像抡谐,于是被迫代替她去往敵國(guó)和親裁奇。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評(píng)論 2 348