首页 > 代码库 > 快速排序算法
快速排序算法
快速排序算法
快排思路:
取一个元素p(第一个元素),使元素p归位;
列表被p分成两部分,左边都比p小,右边都比p大;
递归完成排序。
时间复杂度为:
O(nlogn)
import random import time def cal_time(func): """ 测试时间装饰器 :param func: 接收一个函数 :return: """ def wrapper(*args, **kwargs): ti = time.time() x = func(*args, **kwargs) ti2 = time.time() print("time cost:", func.__name__, ti2 - ti) return x return wrapper def quick_sort_x(data, left, right): if left < right: # 将left位置的数字,归位 mid = partition(data, left, right) # 递归操作 quick_sort_x(data, left, mid - 1) quick_sort_x(data, mid + 1, right) def partition(data, left, right): """ 实现归位操作 :param data: 无序列表 :param left: 列表左边下标 :param right: len(data) - 1 :return:排序后的列表 """ tmp = data[left] while left < right: while left < right and data[right] >= tmp: right -= 1 data[left] = data[right] while left < right and data[left] <= tmp: left += 1 data[right] = data[left] data[left] = tmp return right @cal_time def quick_sort(data): return quick_sort_x(data, 0, len(data) - 1) da = list(range(10000)) random.shuffle(da) quick_sort(da) print(da)
快速排序算法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。