色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

2分鐘看懂快速排序的算法

學益得智能硬件 ? 來源:學益得智能硬件 ? 2023-02-25 09:32 ? 次閱讀

之前有同學提出想要復習一下排序算法,那我們今天就挑一個難度中等的,快速排序。

先搞清楚快速排序原理,然后再寫代碼。

快速排序的原理不難,先找到一個數字,我們把它稱作基準,然后通過一系列的比較交換,能讓基準達到一個合適的位置,保證基準前面的數字都比他小,后面的數字都比他大。

8c9db78a-b2b0-11ed-bfe3-dac502259ad0.png

這個過程需要兩個指針 x 和 y,其實就是數組的下標,x指向數組第一個數字,y指向數組最后一個數字。

為了操作方便,我們一般以第一個數字為基準。

先把他記下來。

8cb9180e-b2b0-11ed-bfe3-dac502259ad0.png ?

然后從 y 開始,4比3大,不用管,y 向前移動。

8cdc0d78-b2b0-11ed-bfe3-dac502259ad0.png ?

2比 3 小,比基準小的數字應該放在左邊,所以把 2 移動到前面,同時 x 向后移動。

8d15da1c-b2b0-11ed-bfe3-dac502259ad0.png ?

6比 3 大,放在后面,y 向前移動。

8d5014ac-b2b0-11ed-bfe3-dac502259ad0.png ?

0比3小,放在前面,x向后移動。

8d85eba4-b2b0-11ed-bfe3-dac502259ad0.png ?

7比3大,放在后面,y 向前移動。

8db8b886-b2b0-11ed-bfe3-dac502259ad0.png ?

最后,x 和 y 相等,把3放到這個位置上。

8dd9834a-b2b0-11ed-bfe3-dac502259ad0.png

第一輪移動結束。現象就是,3的前面都是比3小的,3的后面都是比3大的。

接下來就是對3的前面和3的后面做同樣的操作,我們應該立馬能想到遞歸。

搞清楚了原理還不夠,作為求職者把代碼寫出來才是王道。

#include 


void quick_sort(int *a, int start, int end)
{
    if (start >= end)
        return;


    int x = start;
    int y = end;
    int base = a[start];


    while (x < y)
    {   
        while (a[y] > base && x < y)
        {   
            y--;
        }   


        if (x < y)
        {
            a[x++] = a[y];
        }


        while (a[x] < base && x < y)
        {
            x++;
        }


        if (x < y)
        {
            a[y--] = a[x];
        }
    }


    a[x] = base;


    quick_sort(a, start, x - 1);
    quick_sort(a, x + 1, end);
}


int main()
{
    int array[] = {3, 6, 7, 0, 2, 4};


    quick_sort(array, 0, 6);


    for (int i = 0; i < 6; i++)
    {
        printf("%d ", array[i]);
    }


    return 0;
}
快速排序是不是真的很快? 我們可以和冒泡排序做個對比,修改下代碼,隨機產生5萬個數據,使用冒泡排序和快速排序,時間上的差別確實很大。

冒泡排序:
real  0m8.255s
user  0m8.098s
sys  0m0.008s
快速排序:
real  0m0.078s
user  0m0.010s
sys  0m0.000s
要說原因的話,冒泡排序只能相鄰位置上比較移動,但是快速排序卻可以跳著來,所以大部分情況下,快速排序效率都要高于冒泡排序。



審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 排序算法
    +關注

    關注

    0

    文章

    52

    瀏覽量

    10056
  • Array
    +關注

    關注

    99

    文章

    18

    瀏覽量

    17828

原文標題:2分鐘看懂快速排序

文章出處:【微信號:學益得智能硬件,微信公眾號:學益得智能硬件】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    FPGA排序-冒泡排序介紹

    排序算法是圖像處理中經常使用一種算法,常見的排序算法有插入排序、希爾
    發表于 07-17 10:12 ?1082次閱讀
    FPGA<b class='flag-5'>排序</b>-冒泡<b class='flag-5'>排序</b>介紹

    十大排序算法總結

    排序算法是最經典的算法知識。因為其實現代碼短,應該廣,在面試中經常會問到排序算法及其相關的問題。一般在面試中最常考的是
    的頭像 發表于 12-20 10:39 ?1118次閱讀

    matlab快速排序算法實現

    待排的記錄分割成獨立的兩部分,%其中前一部的 記錄的關鍵字均比另一部記錄的關鍵字小,%再分別對兩組記錄進行遞歸分割,達到排序的目的%平均時間復雜度為O(log2(n))functi
    發表于 02-29 15:58

    嵌入式stm32實用的排序算法 - 交換排序

    合很多,我這里就不再一一舉例說明,掌握排序的基本算法,到時候遇到就有用武之地。Ⅱ、排序算法分類1.按存儲分類:內部排序和外部
    發表于 04-12 13:14

    基于Hadoop的幾種排序算法研究

    如何高效排序是在對大數據進行快速有效的分析與處理時的一個重要問題。首先對基于Hadoop平臺的幾種高效的排序算法(Quicksort,Heapsort和Mergesort
    發表于 11-08 17:25 ?15次下載
    基于Hadoop的幾種<b class='flag-5'>排序</b><b class='flag-5'>算法</b>研究

    C語言教程之幾種排序算法

    數據結構的排序算法有很多種。 其中, 快速排序 、希爾排序、堆排序、直接選擇
    發表于 11-16 10:23 ?1759次閱讀

    常用排序算法分析

    一種是比較排序,時間復雜度O(nlogn) ~ O(n^2),主要有:冒泡排序,選擇排序,插入排序,歸并
    的頭像 發表于 07-13 16:13 ?2160次閱讀

    實用的排序算法 - 交換排序

    實用的排序算法 - 交換排序
    的頭像 發表于 03-20 09:53 ?1739次閱讀
    實用的<b class='flag-5'>排序</b><b class='flag-5'>算法</b> -  交換<b class='flag-5'>排序</b>

    排序算法分享:歸并排序說明

    我們今天繼續給大家分享排序算法里面的另外一種排序算法:歸并排序
    的頭像 發表于 12-24 14:34 ?770次閱讀

    淺談希爾排序算法思想以及如何實現

    01 希爾排序算法思想 希爾排序也是一種插入排序,是簡單插入排序改進后的一個更高效版本,同時也是首批突破O(n^
    的頭像 發表于 06-30 10:05 ?2025次閱讀

    C語言排序快速排序的技巧

    快速排序是由東尼·霍爾所發展的一種排序算法。在平均狀況下,排序 n 個項目要Ο(n log n)次比較。在最壞狀況下則需要Ο(n
    的頭像 發表于 07-29 15:14 ?2478次閱讀
    C語言<b class='flag-5'>排序</b>中<b class='flag-5'>快速</b><b class='flag-5'>排序</b>的技巧

    2分鐘快速教你如何在華為模擬器ensp上進行抓包?

    2分鐘快速教你如何在華為模擬器ensp上進行抓包?
    的頭像 發表于 12-05 11:25 ?4530次閱讀

    排序算法有哪些

    合并 我們來具體看看例子,假設我們現在給定一個數組:[6,3,2,7,1,3,5,4],我們需要使用歸并算法對其排序,其大致過程如下圖所示: 階段可以理解為就是 遞歸拆分子序列 的
    的頭像 發表于 10-11 15:49 ?606次閱讀
    <b class='flag-5'>排序</b><b class='flag-5'>算法</b>有哪些

    分鐘看懂雪崩光電二極管

    分鐘看懂雪崩光電二極管
    的頭像 發表于 11-23 09:09 ?1909次閱讀
    三<b class='flag-5'>分鐘</b><b class='flag-5'>看懂</b>雪崩光電二極管

    分鐘看完看懂電機的接線方法

    今天給大家講解一下,看懂電機的接線方法,一分鐘看完,一看就懂!。 電機的接線方法無外乎以下兩種 1a星形接法(實物圖)
    發表于 03-31 15:40 ?3605次閱讀
    一<b class='flag-5'>分鐘</b>看完<b class='flag-5'>看懂</b>電機的接線方法
    主站蜘蛛池模板: 国产精品视频人人做人人爽| 欧美 亚洲 中文字幕 高清| 脱女学小内内摸出水网站免费 | 啊…嗯啊好深男男小黄文| 快播av种子| 欲香欲色天天综合和网| 激情综合色| 亚洲三级在线视频| 黄色软件视频app| 亚洲国产黄色| 国产揄拍国产精品| 亚洲国产夜色在线观看| 国产亚洲精品黑人粗大精选| 午夜婷婷一夜七次郎| 国产精品一区二区激情| 天天操夜夜噜| 国产-第1页-浮力影院| 色四房播播| 国产叼嘿久久精品久久| 我的奶头被客人吸的又肿又红| 高h 纯肉文| 桃花论坛POWERED2019| 国产高清在线露脸一区| 无码人妻丰满熟妇区五十路久久| 国产精品爽爽久久久久久无码| 无人区乱码1区2区3区网站| 国产精品乱码一区二区三| 偷拍亚洲制服另类无码专区| 国产精品自在自线亚洲| 亚洲成人在线免费| 好色女博士| 永久免费的污视频网站| zooskoo1videos人与狗| 另类欧美尿交| 99久久国产露脸精品国产麻豆| 日日夜夜噜噜| WWW国产亚洲精品久久| 欧美精品中文字幕亚洲专区| 2019伊人查蕉在线观看| 蜜桃臀无码内射一区二区三区| 在线观看国产亚洲|