快速排序演算法(python版本)

2022-09-16 10:00:11 字數 1734 閱讀 3069

實現python**如下:

import syssys.setrecursionlimit(100000) #設定遞迴的最大限制次數為100000次from cal_time import *

import random

#遞迴partition函式

def partition(li,left,right):

tmp=li[left]

while left

while left=tmp:#第一步:找右邊比左邊tmp小的數,移動右邊index

right=right-1 #往左走一步

li[left]=li[right]#第二步:把右邊的數寫到左邊的位置上

#print(li,"right")

while left#第三步:找左邊比起大的數,移動左邊index

left=left+1

li[right]=li[left]#第四步 左邊移到右邊

#print(li,"left")

li[left]=tmp #把tmp歸位

return left

#快速排序演算法的整體主框架函式

def _quick_sort(li,left,right):

if left

mid=partition(li,left,right) #獲得所定元素應該所處的位置

_quick_sort(li,left,mid-1)

_quick_sort(li,mid+1,right)

@cal_time

def quick_sort(li):

_quick_sort(li,0,len(li)-1)

#最壞的情況,如果元素在最左邊並且右邊全是小於的元素,從大到小排序,時間複雜度變為o(n2),因為每次相當於至只少乙個數,會使得遞迴次數很大

當然可以進行優化,讓第乙個元素和裡面的任意元素進行交換,便可以實現正常的排列演算法。

快速排序(Python版本)

快速排序 python版本 這裡是一段防爬蟲文字,請讀者忽略。本文原創首發於csdn,作者idys 部落格首頁 先從數列中取出乙個數作為基準數。分割槽過程,將比這個數大的數全放到它的右邊,小於或等於它的數全放到它的左邊。再對左右區間重複第二步,直到各區間只有乙個數。0 1234 5678 97065...

快速排序的python版本

快速排序屬於分治演算法中最經典的乙個例項,不同於氣泡排序和選擇排序,快排的思想是選定乙個基準元素,根據該元素對列表進行初步排序,選出比該元素小的排在該元素之前,比該元素大的排在其後,然後,在對這兩組元素進行遞迴排序。關於快排的結構,書本上大致分為兩類,單向快排和雙向快排。演算法導論介紹的快排屬於單向...

Python 快速排序演算法

快速排序 空間複雜度為o log n 時間複雜度為 o n log n o n 2 演算法不穩定,不具有適應性 1 從序列中取出乙個數作為基準數 2 分割槽,比基準數大的放基準數右邊,小的放左邊 3 遞迴,重複第二步操作,直到基準數的左邊和右邊分別只剩乙個數 演算法的穩定性是指 對於待排序的序列中,...