超級易懂快速排序 Python

2021-10-02 14:40:11 字數 1422 閱讀 9717

1. 找出乙個樞紐節點key

2. 將陣列劃分成左右兩部分陣列,左邊陣列中的值都比樞紐節點的值小,右邊陣列中的節點的值都要key比樞紐節點key的值大

3. 對左邊陣列進行求解,返回排序後的陣列 left_arr

4. 對右邊資料進行求解,返回排序後的陣列 right_arr

5. 將左邊陣列和右邊陣列以及樞紐節點進行拼接

class solution():

def quick_sort(self, nums):

if len(nums) == 0 or len(nums) == 1:

return nums

less = list()

more = list()

mid = list()

key = nums[0]

for num in nums:

if num < key:

elif num > key:

else:

left_arr = self.quick_sort(less)

right_arr = self.quick_sort(more)

return left_arr + mid + right_arr

class solution_0():

def quick_sort(self, nums):

if len(nums) == 0 or len(nums) == 1:

return nums

left = 0

right = len(nums) - 1

key = nums[0]

while left < right:

while left < right and nums[right] >= key:

right -= 1

nums[left], nums[right] = nums[right], nums[left]

while left < right and nums[left] < key:

left += 1

nums[left], nums[right] = nums[right], nums[left]

nums[left] = key

left_arr = self.quick_sort(nums[:left])

right_arr = self.quick_sort(nums[left+1:])

return left_arr + [key] + right_arr

if __name__ == '__main__':

nums = [1, 2, 1, 0, 3, 9, 2]

res = solution_0().quick_sort(nums)

print(res)

排序演算法 快速排序超級總結

快速排序 一 介紹 快速排序和合併排序有點類似,兩者可以相互比較。快速排序也是像合併排序那樣將整個序列分成兩段分別進行排序。但是快速排序沒有合併排序的合併過程。該演算法是1960 年c.a.r.hoard提出的乙個非常好的排序演算法。快速排序演算法需要選擇乙個劃分元素,把小於劃分元素的元素放在它的左...

python快速排序排序 python快速排序

import random def rand n for i in range n yield random.randint 0,1000 建立乙個隨機數列表 def createlist n lists for i in rand n return lists 挖坑法快速排序 def quick ...

經典排序演算法 最易懂的快速排序介紹

include pragma warning disable 4996 void quicksort int arr,int left,int right 否則的話,如遞迴所有控制項路徑,函式將導致執行時堆疊溢位 int l left int r right int key arr left 找第乙...