我是靠谱客的博主 壮观小土豆,最近开发中收集的这篇文章主要介绍Python(算法综合)问题 D: 兵贵神速-快速排序,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

问题 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: 兵贵神速-快速排序所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部