【快速排序的思想】
- 选中标记列表中间位置的值middle = list[len(list) // 2] ,然后删除这个值。
- 对比middle大的值放到rightList里面,比middle小的值放到leftList里面。
- 迭代(即递归),返回值quickSort(leftList) + middle + quickSort(rightSort)。
import random
import sys
list = []
def generate():
n = int(input("请输入本次排序数字个数:"))
while n > 0:
list.append(random.randint(0,1000))
n -= 1
print("生成的数字列表如下:%s" %list)
def quickSort(markList):
if len(markList) <= 1:
return markList
middle = markList[len(markList) // 2]
leftList,rightList = [],[]
del markList[len(markList) // 2]
for value in markList:
if value > middle:
rightList.append(value)
else:
leftList.append(value)
return quickSort(leftList) + [middle] + quickSort(rightList)
def main():
generate()
print("排序后数字列表如下:%s" %quickSort(list))
if __name__ == '__main__':
try:
main()
except KeyboardInterrupt:
sys.stderr.write("退出")
sys.exit(0)