概述
问题 D: 兵贵神速-快速排序
题目描述
未来的战争是科技的战争。
假如 A 国受到 B 国的导弹威胁,那么 A 国就要启用导弹防御系统,
根据卫星、雷达信息快速计算出敌方弹道导弹发射点和落点的信息,
将导弹的跟踪和评估数据转告地基雷达,发射拦截导弹摧毁敌方导弹或使导弹失去攻击能力。
如果 A 国的导弹防御系统处理速度缓慢,等算出结果时,导弹已经落地了,还谈何拦截?
现代科技的发展,速度至关重要。
我们以最基本的排序为例,生活中到处都用到排序,
例如各种比赛、奖学金评选、推荐系统等,排序算法有很多种,
能不能找到更快速高效的排序算法呢?
输入
t组样例
请先输入要排序的数据的个数n(n <= 10000)
请输入要排序的数据
输出
排序后的序列
样例输入
1
9
30 24 5 58 18 36 12 42 39
样例输出
5 12 18 24 30 36 39 42 58
解答:
# 快速排序取mid值
def quick(li, left, right):
tmp = li[left] # 首先将左边的第一个值存起来
while left < right: # 当左右相等就退出循环
# 只能在右边找,并且大于tmp,就加一
while left < right and li[right] >= tmp:
right -= 1
li[left] = li[right] # 找到就将这个数填到左边空缺部分
while left < right and li[left] <= tmp:
left += 1
li[right] = li[left] # 归位,左右相等,中间值
li[right] = tmp
return right
def quick_sort(data, left, right):
if left < right:
mid = quick(data, left, right)
quick_sort(data, left, mid - 1)
quick_sort(data, mid + 1, right)
n = int(input())
for i in range(n):
n1 = int(input())
li = list(map(int, input().split()))
quick_sort(li, 0, len(li) - 1)
# 输出
for j in li:
print(j, end=" ")
print()
答案不唯一,必定有更加优化的解法欢迎分享
最后
以上就是壮观小土豆为你收集整理的Python(算法综合)问题 D: 兵贵神速-快速排序的全部内容,希望文章能够帮你解决Python(算法综合)问题 D: 兵贵神速-快速排序所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复