排序算法——快速排序-創(chuàng)新互聯(lián)

快排

? 確定一組數(shù)據(jù) ,即q數(shù)組

十余年的正定網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。成都全網(wǎng)營(yíng)銷的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整正定建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)公司從事“正定網(wǎng)站設(shè)計(jì)”,“正定網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

? 左端點(diǎn)為了,右端點(diǎn)為r

? (1)確定分界點(diǎn)

? q[l] 或 q[ (l + r) / 2] 或 q[r] 或任意一個(gè)數(shù) 作為分界點(diǎn),分界點(diǎn)數(shù)為x

? (2)調(diào)整區(qū)間 (重點(diǎn))

? 使<= x的數(shù)放在左半邊,使 >= x 的數(shù)放在右半邊,兩邊的數(shù)可以亂序,暫時(shí)不用排序

? (3)利用遞歸處理左右兩端 ,進(jìn)行排序

? 暴力法

? (1)開(kāi)兩個(gè)額外數(shù)組a,b

? (2)掃描 l 到 r 的所有數(shù),將<= x 的值放到a中,將 >= x的數(shù)放到b中

? (3)將a,b排序后放到q數(shù)組中 a[ ] ->q[ ], b[ ]->q[ ];

? (4)弊端:額外開(kāi)辟空間,占用內(nèi)存

? 簡(jiǎn)便方法(指針)

? 用兩個(gè)指針i,j指向左端與右端的數(shù)

? (1)判斷指針i所指向的數(shù)是否小于x,符合條件時(shí)往右移一位,當(dāng)大于等于x時(shí)指針i停下

? (2)判斷指針j所指向的數(shù)是否大于x,符合條件時(shí)往左移一位,當(dāng)小于等于x時(shí)指針停下

? (3)將i與j指針?biāo)赶虻臄?shù)交換,并再次重復(fù)1,2,3,直到i,j走到中間位置

? (4)兩邊排序

模板
#include// scanf和printf也在iostream里面 ,但cstdio更快一些
#include#include  //使用swap函數(shù)
using namespace std;
const int N = 1000001;
int n;
int q[N];
void quick_sort(int q[ ], int l, int r)
{
    if (l >= r) return ; // 返回一個(gè)隨機(jī)值,該return只是起到一個(gè)中止的作用,無(wú)需返回特定值
    int x = q[l], i = l - 1, j = r + 1,;
    //x = q[(l+r+1 )/2    一定不能取到邊界上,上面的x只是舉例
    // x = q[l + r >>1]會(huì)更快,以后再理解
    while (i< j)
    {
        do {
            i++;
        } while (q[i]< x);
        do {
            j--;
        } while (q[j] >x);
            if (i< j) swap(q[i],q[j]);
    }
    if(l< j )quick_sort(q, l, j);//左半部分
    if(i< r)quick_sort(q, j + 1, r);//右半部分
}
int main()
{
    scanf("%d", &n);
    for (int i = 0;i< n;++i) scanf("%d", &q[i]);
    quick_sort(q, 0, n-1);
    for (int i = 0;i< n;++i) printf("%d ", q[i]);
    return 0;
}

END


自學(xué)編程的小伙伴們不容易,在學(xué)習(xí)編程的路上會(huì)遇到很多瓶頸,甚至?xí)械矫悦?,為此我給大家整理了一些資源福利,都放在下方啦,還可以和群里的小伙伴們一起來(lái)學(xué)習(xí)交流嗷~

C/C++編程學(xué)習(xí)基地icon-default.png?t=M85Bhttps://jq.qq.com/?_wv=1027&k=9Hqqlikh

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

當(dāng)前文章:排序算法——快速排序-創(chuàng)新互聯(lián)
當(dāng)前鏈接:http://muchs.cn/article34/dspcse.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站營(yíng)銷、關(guān)鍵詞優(yōu)化、做網(wǎng)站、云服務(wù)器

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站