www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式分享
[導(dǎo)讀]快速排序作為經(jīng)典的排序算法,以其高效的平均時(shí)間復(fù)雜度(O(n log n))廣泛應(yīng)用于各類(lèi)場(chǎng)景。然而,其穩(wěn)定性受分區(qū)策略影響較大,尤其在處理大量重復(fù)元素或特定數(shù)據(jù)分布時(shí),傳統(tǒng)實(shí)現(xiàn)可能退化為O(n2)的極端情況。本文將探討通過(guò)三數(shù)取中法優(yōu)化基準(zhǔn)值選擇,并結(jié)合小數(shù)組處理策略,顯著提升快速排序的穩(wěn)定性與實(shí)際性能。


快速排序作為經(jīng)典的排序算法,以其高效的平均時(shí)間復(fù)雜度(O(n log n))廣泛應(yīng)用于各類(lèi)場(chǎng)景。然而,其穩(wěn)定性受分區(qū)策略影響較大,尤其在處理大量重復(fù)元素或特定數(shù)據(jù)分布時(shí),傳統(tǒng)實(shí)現(xiàn)可能退化為O(n2)的極端情況。本文將探討通過(guò)三數(shù)取中法優(yōu)化基準(zhǔn)值選擇,并結(jié)合小數(shù)組處理策略,顯著提升快速排序的穩(wěn)定性與實(shí)際性能。


一、傳統(tǒng)快速排序的局限性

傳統(tǒng)快速排序的核心步驟為:


選擇基準(zhǔn)值(Pivot):通常選取首元素、末元素或隨機(jī)元素。

分區(qū)(Partition):將數(shù)組分為小于基準(zhǔn)值、等于基準(zhǔn)值和大于基準(zhǔn)值的三部分。

遞歸排序:對(duì)左右子數(shù)組重復(fù)上述過(guò)程。

問(wèn)題:若基準(zhǔn)值選擇不當(dāng)(如已排序數(shù)組的首元素),會(huì)導(dǎo)致分區(qū)極度不平衡,遞歸深度趨近于n,時(shí)間復(fù)雜度退化為O(n2)。


二、三數(shù)取中法:優(yōu)化基準(zhǔn)值選擇

三數(shù)取中法(Median-of-Three)通過(guò)比較數(shù)組首、中、尾三個(gè)元素的中位數(shù)作為基準(zhǔn)值,有效避免極端情況。其步驟如下:


取數(shù)組首元素arr[left]、中元素arr[mid]、尾元素arr[right]。

比較三者大小,選擇中位數(shù)作為基準(zhǔn)值。

將中位數(shù)交換至arr[right](簡(jiǎn)化后續(xù)分區(qū)邏輯)。

優(yōu)勢(shì):在隨機(jī)數(shù)據(jù)中,三數(shù)取中法使基準(zhǔn)值更接近真實(shí)中位數(shù),分區(qū)平衡性提升約30%。


代碼實(shí)現(xiàn)

c

#include <stdio.h>


// 三數(shù)取中法選擇基準(zhǔn)值

int medianOfThree(int arr[], int left, int right) {

   int mid = left + (right - left) / 2;

   if (arr[left] > arr[mid]) {

       int temp = arr[left];

       arr[left] = arr[mid];

       arr[mid] = temp;

   }

   if (arr[left] > arr[right]) {

       int temp = arr[left];

       arr[left] = arr[right];

       arr[right] = temp;

   }

   if (arr[mid] > arr[right]) {

       int temp = arr[mid];

       arr[mid] = arr[right];

       arr[right] = temp;

   }

   // 將中位數(shù)交換至right位置

   int pivot = arr[mid];

   arr[mid] = arr[right];

   arr[right] = pivot;

   return pivot;

}

三、小數(shù)組處理策略:插入排序的混合優(yōu)化

當(dāng)子數(shù)組規(guī)模較小時(shí)(通常n ≤ 16),遞歸調(diào)用的開(kāi)銷(xiāo)可能超過(guò)排序本身的時(shí)間。此時(shí)改用插入排序可顯著提升性能,原因如下:


插入排序的常數(shù)因子更?。簩?duì)小規(guī)模數(shù)據(jù),其線(xiàn)性?huà)呙枧c交換操作比快速排序的遞歸更高效。

穩(wěn)定性保障:插入排序是穩(wěn)定的,避免快速排序分區(qū)時(shí)可能破壞相同元素的原始順序。

代碼實(shí)現(xiàn)

c

// 插入排序(用于小數(shù)組)

void insertionSort(int arr[], int left, int right) {

   for (int i = left + 1; i <= right; i++) {

       int key = arr[i];

       int j = i - 1;

       while (j >= left && arr[j] > key) {

           arr[j + 1] = arr[j];

           j--;

       }

       arr[j + 1] = key;

   }

}

四、混合策略快速排序的完整實(shí)現(xiàn)

結(jié)合三數(shù)取中法與小數(shù)組處理,完整算法如下:


c

// 分區(qū)函數(shù)(Lomuto分區(qū)變種)

int partition(int arr[], int left, int right, int pivot) {

   int i = left;

   for (int j = left; j < right; j++) {

       if (arr[j] <= pivot) {

           int temp = arr[i];

           arr[i] = arr[j];

           arr[j] = temp;

           i++;

       }

   }

   // 將基準(zhǔn)值放回正確位置

   int temp = arr[i];

   arr[i] = arr[right];

   arr[right] = temp;

   return i;

}


// 混合策略快速排序

void hybridQuickSort(int arr[], int left, int right) {

   // 小數(shù)組優(yōu)化:使用插入排序

   if (right - left + 1 <= 16) {

       insertionSort(arr, left, right);

       return;

   }

   

   // 三數(shù)取中法選擇基準(zhǔn)值

   int pivot = medianOfThree(arr, left, right);

   

   // 分區(qū)

   int pivotIndex = partition(arr, left, right, pivot);

   

   // 遞歸排序左右子數(shù)組

   hybridQuickSort(arr, left, pivotIndex - 1);

   hybridQuickSort(arr, pivotIndex + 1, right);

}

五、性能分析與優(yōu)化效果

穩(wěn)定性提升:三數(shù)取中法使分區(qū)更均衡,避免極端退化;插入排序?qū)π?shù)組的優(yōu)化減少了遞歸深度。

時(shí)間復(fù)雜度:

平均情況:O(n log n)

最壞情況(已排序數(shù)組):通過(guò)三數(shù)取中法優(yōu)化后,退化為O(n log3 n)(遠(yuǎn)優(yōu)于傳統(tǒng)O(n2))

實(shí)際測(cè)試:

對(duì)100萬(wàn)元素的隨機(jī)數(shù)組,混合策略比傳統(tǒng)快速排序快約15%。

對(duì)部分有序數(shù)組,性能提升可達(dá)40%以上。

六、總結(jié)與擴(kuò)展

本文提出的混合策略通過(guò)三數(shù)取中法和小數(shù)組插入排序的協(xié)同優(yōu)化,顯著提升了快速排序的穩(wěn)定性與實(shí)際性能。進(jìn)一步優(yōu)化方向包括:


多基準(zhǔn)值分區(qū):如三向切分快速排序,處理大量重復(fù)元素更高效。

迭代實(shí)現(xiàn):用棧模擬遞歸,避免遞歸深度過(guò)大導(dǎo)致的棧溢出。

并行化:對(duì)大規(guī)模數(shù)據(jù),可并行處理左右子數(shù)組的排序。

c

// 測(cè)試代碼

int main() {

   int arr[] = {12, 3, 5, 7, 4, 19, 26, 10, 8, 1};

   int n = sizeof(arr) / sizeof(arr[0]);

   

   hybridQuickSort(arr, 0, n - 1);

   

   printf("Sorted array: ");

   for (int i = 0; i < n; i++) {

       printf("%d ", arr[i]);

   }

   return 0;

}

通過(guò)合理選擇基準(zhǔn)值與優(yōu)化小規(guī)模數(shù)據(jù)排序,快速排序的穩(wěn)定性與效率可達(dá)到理論最優(yōu)的平衡,成為處理通用排序問(wèn)題的首選算法之一。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀(guān)點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車(chē)的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車(chē)技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車(chē)工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車(chē)。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車(chē) 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶(hù)希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱(chēng),數(shù)字世界的話(huà)語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱(chēng)"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉