|
邀请回答
马上注册,享受更多特权
您需要 登录 才可以下载或查看,没有帐号?立即注册 ![](source/plugin/zhanmishu_wechat/template/static/img/wechat_login.png)
x
本帖最后由 Lihoon 于 2020-3-17 20:14 编辑
首先,还是建立生成随机数组的程序:random_list.py- #-*- coding:utf-8 -*-
- # Created Date: 2020/03/10
- import random
- def random_list(n):
- """返回一个长度为n的随机数列表,数值为[0,1000)"""
- print("Input number is :{}".format(n))
- iList = []
- for num in range(n):
- iList.append(random.randrange(1000))
- return iList
-
- if __name__ == "__main__":
- iList = random_list(10)
- print(iList)
复制代码 然后,建立快速排序的程序:quick_sort.py
- #-*- coding:utf-8 -*-
- #Created Date: 2020/03/16
- from random_list import random_list
- import timeit
- import sys
- # 命令行执行运行命令时传入数组的长度
- num = sys.argv[1]
- iList = random_list(int(num))
- def quick_sort(iList):
- '''定义快速排序函数'''
- if len(iList) <= 1:
- return iList
- # 定义两个空列表
- left = []
- right = []
- # 从列表中第2个数字开始取数字
- for var in iList[1:]:
- # 如果取出来的值比第1个数小,则放到左边的数列中,否则放到右边的数列中
- if var <= iList[0]:
- left.append(var)
- else:
- right.append(var)
- """ 通过递归调用函数自身的方式,对第一次分隔的左右数列进行递归分隔,直到每个左右数列只有1个元素,然后按顺序再结合,重新生成排序好的数列
- """
- return quick_sort(left) + [iList[0]] + quick_sort(right)
-
- if __name__ == "__main__":
- print("source: {}".format(iList))
- print("results: {}".format(quick_sort(iList)))
- print(timeit.timeit("quick_sort(iList)", "from __main__ import quick_sort, iList", number = 100))
复制代码 在命令行输入运行指令:
- python quick_sort.py 10 #传入参数10,表示数组长度
复制代码 执行结果为:
- Input number is :10
- source: [683, 99, 772, 66, 863, 766, 175, 928, 86, 455]
- results: [66, 86, 99, 175, 455, 683, 766, 772, 863, 928]
- 0.0010827 #计算时间
复制代码
|
上一篇: 【排序】冒泡排序法python实现下一篇: 【排序】归并排序法python实现
|