快速排序算法实现:运用Python中的run()函数实现思路解析
快速排序算法是一种常用的排序算法,其基本思想是在待排序的数组中选择一个基准元素(pivot),然后将数组分成两部分,一部分是小于等于基准元素的子数组,另一部分是大于基准元素的子数组。然后对这两部分子数组进行递归调用快速排序算法,最终得到有序的数组。
快速排序算法的实现思路可以分为以下几个步骤:
1. 选择一个基准元素(可以是任意位置的元素,为了简单起见,通常选择数组的 个元素)。
2. 将小于等于基准元素的元素放在基准元素的左边,将大于基准元素的元素放在基准元素的右边。这一步可以通过两个指针分别从数组的两端开始向中间移动,并交换不符合要求的元素来实现。
3. 递归调用快速排序算法分别对左右两部分子数组进行排序。
4. 合并左右两部分子数组,得到最终排序的数组。
下面是使用Python中的run()函数实现快速排序算法的例子:
def quick_sort(arr):
if len(arr) <= 1:
return arr
else:
pivot = arr[0] # 选择 个元素作为基准元素
less = [x for x in arr[1:] if x <= pivot] # 小于等于基准元素的子数组
greater = [x for x in arr[1:] if x > pivot] # 大于基准元素的子数组
return quick_sort(less) + [pivot] + quick_sort(greater) # 递归调用快速排序算法,并合并结果
if __name__ == '__main__':
arr = [9, 2, 5, 1, 7, 4, 8, 3, 6]
sorted_arr = quick_sort(arr)
print(sorted_arr)
运行这段代码,输出结果为:[1, 2, 3, 4, 5, 6, 7, 8, 9],说明快速排序算法成功地对数组进行了排序。
在这个例子中,我们首先选择数组的 个元素9作为基准元素。然后将小于等于9的元素放在左边,大于9的元素放在右边。在递归调用快速排序算法对左右两部分子数组进行排序之后,得到[1, 2, 3, 4, 5, 6, 7, 8]和[7, 8, 9]两个子数组,然后根据基准元素的位置将它们合并成最终的有序数组[1, 2, 3, 4, 5, 6, 7, 8, 9]。整个过程可以通过递归调用快速排序算法来实现。
使用run()函数可以更好地封装快速排序算法,便于程序的模块化和测试。我们可以将上述代码封装在一个名为quick_sort的函数中,并使用run()函数来调用它:
from typing import List
from codetiming import Timer
def run(func, *args, **kwargs):
timer = Timer()
timer.start()
result = func(*args, **kwargs)
timer.stop()
print(f"Time taken: {timer.elapsed:.6f} seconds")
return result
def quick_sort(arr):
# 快速排序算法的实现
if __name__ == '__main__':
arr = [9, 2, 5, 1, 7, 4, 8, 3, 6]
sorted_arr = run(quick_sort, arr)
print(sorted_arr)
通过这样的封装,在运行快速排序算法时,会输出排序所花费的时间。使用run()函数可以更方便地测试算法的运行时间,并进行比较。
总之,快速排序算法是一种高效的排序算法,可以通过选择一个基准元素将数组分成两部分并递归调用来实现。运用Python中的run()函数可以更好地封装快速排序算法,并方便测试和比较算法的运行时间。
