05-快速排序(python、oc)

  • 最優(yōu)時(shí)間復(fù)雜度:O(nlogn)
  • 最壞時(shí)間復(fù)雜度:O(n2)
  • 穩(wěn)定性:不穩(wěn)定
python
# coding:utf-8

def quick_sort(alist, first, last):
    """快速排序"""
    if first > last:
        return

    mid_value = alist[first]
    low = first
    high = last

    while high > low:
        while high > low and alist[high] >= mid_value:
            high -= 1
        alist[low] = alist[high]

        while high > low and alist[low] < mid_value:
            low += 1
        alist[high] = alist[low]
    alist[low] = mid_value

    quick_sort(alist, first, low - 1)
    quick_sort(alist, low + 1, last)

if __name__ == "__main__":
    li = [54, 26, 93, 17, 77, 31, 44, 55, 20]
    print(li)
    quick_sort(li, 0, len(li)-1)
    print(li)

objective-c

/**
 快速排序
 */
- (void)quick_sort:(NSMutableArray *)arr first:(NSInteger)first last:(NSInteger)last
{
    if (first > last) {
        return;
    }
    NSInteger low = first;
    NSInteger high = last;
    NSNumber *mid_value = arr[first];
    
    while (high > low) {
        while (high > low && arr[high] >= mid_value) {
            high--;
        }
        arr[low] = arr[high];
        
        while (high > low && arr[low] < mid_value) {
            low++;
        }
        arr[high] = arr[low];
    }
    arr[high] = mid_value;
    
    [self quick_sort:arr first:first last:high - 1];
    
    [self quick_sort:arr first:high + 1 last:last];
}
示例圖
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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