快速排序有三個變數:low(left),hight(right),key(其中left,right代表陣列的首尾,是不變值)
low是指向陣列左邊的指標,hight是指向陣列右邊的指標,key是比較的基準。在執行快速排序的過程中,首先
**如下:
# -*- coding: utf-8 -*-
# @time : 2018/5/30 9:37
# @author : li
# @file : quick_sort.py
import random
defquick_sort
(array, left, right):
""" :param array: 待排序資料
:param left: 左邊下標
:param right: 右邊下標
:return:
"""if left > right:
return
low = left
hight = right
key = array[low]
while low < hight:
while low < hight and array[hight] > key:
# 只要hight下標的資料比key大,hight就往前走
hight -= 1
array[low] = array[hight]
array[hight] = key
while low < hight and array[low] <= key:
# 只要low的資料比key小或者等於key,low就往後走
low += 1
array[hight] = array[low]
array[low] = key
print(array)
quick_sort(array, left, low-1)
quick_sort(array, low+1, right)
if __name__=="__main__":
array = [random.randrange(10000+i) for i in range(10)]
print("before sort:", array)
quick_sort(array, 0, len(array) - 1)
print("-------快速排序之後的陣列 -------")
print(array)
輸出結果:
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 ...
排序 快速排序 Python
快速排序 快排 是非常常用的排序方法,在技術面試中出現頻率也特別高。它主要採用交換和分治的策略進行排序。是不穩定排序。步驟 1 在序列中選乙個元素作為劃分的基準元素 pivot 2 將所有不大於pivot的數字放在pivot的前面,大於pivot的數字放在pivot的後面 3 以pivot為界,對前...
python快速排序
coding utf 8 class quicksort def sort self,list,left,right 開始位置小於 位置 if left 取到中間的乙個下標值 s list left right 2 i 0 i left j 下標結束 j right while true 從開始位置...