1. 程式人生 > 實用技巧 >python 快速排序

python 快速排序

 1 def quickSort(arr, left=None, right=None):
 2     left = 0 if not isinstance(left, (int, float)) else left#如果left不屬於int和float範圍,那麼left=0,屬於就還是原來的值
 3     right = len(arr)-1 if not isinstance(right, (int, float)) else right
 4     if left < right:
 5         partitionIndex = partition(arr, left, right)#
找到第一次 分成左邊右邊元素的 界限 6 quickSort(arr, left, partitionIndex-1)#然後排 左邊的元素,按照同樣的方法 7 quickSort(arr, partitionIndex+1, right) 8 return arr 9 10 def partition(arr, left, right): 11 pivot = left#pivot是 基準,用來把大於 和小於基準的數隔開, 通常選擇最左邊的元素 12 index = pivot+1 13 i = index 14 while
i <= right: 15 if arr[i] < arr[pivot]:#如果碰到比基準小的,那麼需要換位置 16 swap(arr, i, index)#把下標為i的元素 和下標為index的元素對調 17 index+=1#index為需要確定的位置 18 i+=1 19 swap(arr, pivot, index-1)#最後再把基準和 找到的最後一個小於基準的數換個位置,那麼基準所在位置就是 小的大的 分隔線 20 return index-1 21 22 def swap(arr, i, j):
23 arr[i], arr[j] = arr[j], arr[i]