博客專欄

        EEPW首頁(yè) > 博客 > 常見(jiàn)排序算法大比拼:原理與性能分析

        常見(jiàn)排序算法大比拼:原理與性能分析

        發(fā)布人:15398633914 時(shí)間:2025-01-17 來(lái)源:工程師 發(fā)布文章

        排序算法是計(jì)算機(jī)科學(xué)的基礎(chǔ),不同算法有不同原理和性能表現(xiàn)。下面對(duì)比幾種常見(jiàn)排序算法。

        冒泡排序是簡(jiǎn)單直觀的排序算法。它重復(fù)走訪要排序的數(shù)列,一次比較兩個(gè)元素,若順序錯(cuò)誤就交換,直到?jīng)]有要交換的元素。時(shí)間復(fù)雜度為 O (n2) ,代碼實(shí)現(xiàn)如下:

        def bubble_sort(arr):
            n = len(arr)
            for i in range(n):
                for j in range(0, n - i - 1):
                    if arr[j] > arr[j + 1]:
                        arr[j], arr[j + 1] = arr[j + 1], arr[j]
            return arr

        快速排序是高效的排序算法,采用分治思想。選擇一個(gè)基準(zhǔn)元素,將數(shù)組分為兩部分,小于基準(zhǔn)的放左邊,大于基準(zhǔn)的放右邊,遞歸對(duì)兩部分排序。平均時(shí)間復(fù)雜度為 O (n log n) ,代碼如下:

        def quick_sort(arr):
            if len(arr) <= 1:
                return arr
            pivot = arr[len(arr) // 2]
            left = [x for x in arr if x < pivot]
            middle = [x for x in arr if x == pivot]
            right = [x for x in arr if x > pivot]
            return quick_sort(left) + middle + quick_sort(right)

        歸并排序同樣基于分治思想,將數(shù)組分成兩半,分別排序后再合并。時(shí)間復(fù)雜度穩(wěn)定在 O (n log n) 。在實(shí)際應(yīng)用中,根據(jù)數(shù)據(jù)規(guī)模和特點(diǎn)選擇合適的排序算法,能提高程序運(yùn)行效率。小規(guī)模數(shù)據(jù)用冒泡排序簡(jiǎn)單直接;大規(guī)模數(shù)據(jù)用快速排序或歸并排序更高效。


        *博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。



        關(guān)鍵詞: 算法

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 阳春市| 镇原县| 黄陵县| 清水河县| 东宁县| 抚顺县| 马公市| 奉节县| 保定市| 兴隆县| 栾川县| 吉木乃县| 绥芬河市| 广汉市| 临潭县| 河西区| 通河县| 星子县| 新野县| 长垣县| 巩义市| 合山市| 北海市| 商河县| 土默特左旗| 福建省| 句容市| 扎赉特旗| 观塘区| 韶山市| 盖州市| 巴青县| 永定县| 正定县| 格尔木市| 湖州市| 龙里县| 武乡县| 威远县| 广西| 泗洪县|