快速排序的基本思想:通過一趟排序?qū)⒋庞涗浄指舫瑟毩⒌膬刹糠郑渲幸徊糠钟涗浀年P(guān)鍵字均比另一部分的關(guān)鍵字小,則可分別對這兩部分記錄繼續(xù)進行排序,以達到整個序列有序。
算法描述快速排序使用分治法來把一個串(list)分為兩個子串(sub-lists)。具體算法描述如下:
class Solution:
def partition(self, nums, begin, end):
pivot, counter = end, begin
# counter 記錄小于pivot的位置和個數(shù)
for i in range(begin, end):
if nums[i] < nums[pivot]:
counter += 1
if counter != i:
temp = nums[counter]
nums[counter] = nums[i]
nums[i] = temp
temp = nums[pivot]
nums[pivot] = nums[counter]
nums[counter] = temp
return counter
def quicksort(self, nums, begin, end):
if end <= begin: return
pivot = self.partition(nums, begin, end)
self.quicksort(nums, begin, pivot - 1)
self.quicksort(nums, pivot + 1, end)
def sortArray(self, nums: List[int]) -> List[int]:
self.quicksort(nums, 0, len(nums) - 1)
return nums
快速排序是圖靈獎得主 C. R. A. Hoare 于 1960 年提出的一種劃分交換排序。它采用了一種分治的策略,通常稱其為分治法(Divide-and-ConquerMethod)。
更多建議: