• 经典算法以及案例总结


    算法习题的总结

    • 题目:数组中的第K个最大元素

      在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。

      示例 1: 输入: [3,2,1,5,6,4]k = 2 输出: 5

      示例 2: 输入: [3,2,3,1,2,4,5,5,6]k = 4 输出: 4

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

      代码如下:

      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:
                      passfor 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]
      ​
      ​
      print(Find_Kth_max([2, 1, 4, 3, 7, 5], 2))
  • 相关阅读:
    说一下Mysql索引
    B树、B-树、B+树、B*树之间的关系
    Mybatis Plus 的优点
    JVM垃圾回收机制
    Java中的集合
    MQ 面试题
    Redis 双写一致性
    Redis 主从复制
    C#中Abstract和Virtual的区别
    C#设计模式(2)——简单工厂模式
  • 原文地址:https://www.cnblogs.com/shierlou-123/p/11307606.html
Copyright © 2020-2023  润新知