快速排序算法

快速排序的算法的核心思想是選取一個(gè)中間值,將整個(gè)數(shù)組分為兩個(gè)部分一個(gè)比這個(gè)一半比這個(gè)中間值大,一半比這中間值小。之后將數(shù)組從這個(gè)中間值中分成兩部分,采用分治的方式將左邊的一半排序,再將右邊的一半排序。這里一個(gè)技巧性就是如何遍歷數(shù)組,以及如何交換。

這里有個(gè)非常有技巧性的東西,就是將中間值取出來,并且用它空出來的空位來進(jìn)行交換。

def quickSort2(nums, start, end):
    if (start >= end):
        return
    low, hight = start, end
    p = nums[start]
    while(start < end):
        while(start < end and p <= nums[end]):
            end -= 1
        nums[start] = nums[end]
        while(start < end and p >= nums[start]):
            start += 1
        nums[end] = nums[start]

    nums[start] = p
    quickSort2(nums, low, start-1)
    quickSort2(nums, start+1, hight)

但是快速排序的算法有一個(gè)問題就是算法的穩(wěn)定性不好

最好情況下的算法復(fù)雜度是2f(\frac{n}{2})+2n \rightarrow O(nlog(n))

最壞的情況下是 f(n-1) +2n \rightarrow O(N^{2})

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容