欢迎访问宙启技术站
智能推送

使用Python编写一个实现快速排序的程序

发布时间:2023-12-04 12:10:01

快速排序(Quick Sort)是一种常用的排序算法,它是一种分治策略的算法。快速排序的基本思想是通过一次划分将待排序的序列分成两个子序列,其中一个子序列的所有元素均小于另一个子序列的所有元素,然后对这两个子序列分别进行快速排序,最终得到有序序列。

下面是使用Python编写的实现快速排序的程序:

def quick_sort(arr):
    if len(arr) <= 1:
        return arr
    pivot = arr[len(arr) // 2]  # 选择枢纽元素
    left = [x for x in arr if x < pivot]  # 构建小于枢纽元素的子序列
    middle = [x for x in arr if x == pivot]  # 构建等于枢纽元素的子序列
    right = [x for x in arr if x > pivot]  # 构建大于枢纽元素的子序列
    return quick_sort(left) + middle + quick_sort(right)  # 递归排序左右子序列

# 使用例子
if __name__ == "__main__":
    arr = [5, 3, 8, 6, 2, 7, 1, 4]
    print("原始序列:", arr)
    sorted_arr = quick_sort(arr)
    print("排序结果:", sorted_arr)

在上述代码中,首先定义了一个quick_sort函数,它接受一个待排序的列表作为参数。在函数内部,首先检查列表的长度是否小于等于1,如果是,则直接返回该列表。

然后,我们选择列表的中间元素作为枢纽元素pivot。接着,我们使用列表推导式构建了三个子序列。left列表包含所有小于pivot的元素,middle列表包含所有等于pivot的元素,right列表包含所有大于pivot的元素。

接下来,我们使用递归调用quick_sort函数对leftright子序列进行排序,并将结果与middle列表合并起来,以得到最终的有序序列。

在使用例子中,我们首先定义了一个待排序的列表arr,然后调用quick_sort函数对其进行排序。最后,打印出排序结果。

以上就是使用Python实现快速排序的程序,并附带了一个使用例子。快速排序算法的时间复杂度为O(nlogn),是一种高效的排序算法。