zoukankan      html  css  js  c++  java
  • 作业:查找第k大的元素

    所谓“第(前)k大数问题”指的是在长度为n(n>=k)的乱序数组中S找出从大到小顺序的第(前)k个数的问题。

    解法1:插入排序

    由于是要找 k 个最大的数,所以没有必要对所有数进行完整的排序。每次只保留 k 个当前最大的数就可以,然后每次对新来的元素跟当前 k 个树中最小的数比较,新元素大的话则插入到数组中,否则跳过。循环结束后数组中最小的数即是我们要找到第 k 大的数。 时间复杂度 (n-k)logk

    注意:嵌套for循环里面,比较的对象;以及range的范围

    --------------------- 本文来自 一只小熊啊 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/Strive_0902/article/details/82940456?utm_source=copy

    def Find_Kth_max(array, k):
        for i in range(1, k):
            for j in range(i, 0, -1):
                if array[j] > array[j - 1]:
                    array[j], array[j - 1] = array[j - 1], array[j]
                else:
                    pass
        for i in range(k, len(array)):
            if array[i] > array[k - 1]:
                array[k - 1] = array[i]
                for j in range(k - 1, 0, -1):
                    if array[j] > array[j - 1]:
                        array[j], array[j - 1] = array[j - 1], array[j]
                    else:
                        pass
        return array[k - 1]
    
    n = int(input("想查找第几大的元素:"))
    print(Find_Kth_max([47, 44, 40, 18, 99, 36, 37, 83, 42, 16, 5, 15, 0], n))

    输出:

    想查找第几大的元素:5
    42

  • 相关阅读:
    2017-2018-1 20155218 《信息安全系统设计基础》第十一周学习总结
    # 课堂测试(CH6)20155218
    Elasticsearch6.0 IKAnalysis分词使用
    ELK6.0环境搭建及配置
    使用PHP抓取网站ico图标
    centos下apache+mysql+php安装及配置
    PHP的(Thread Safe与Non Thread Safe)
    作业九
    附加题
    作业八
  • 原文地址:https://www.cnblogs.com/cn-gzb/p/9753747.html
Copyright © 2011-2022 走看看