最坏情况下,找到n个元素中第二小的元素需要(n-1)+(lgn向上取整+1)
来源:互联网 发布:java爬虫代码视频教程 编辑:程序博客网 时间:2024/06/02 07:10
在最坏情况下,找到n个元素中第二小的元素需要n+向上取整lgn-2次比较。
class Num(object): def __init__(self, num): self.num=num self.compared=list() def __repr__(self): return "{0},{1}".format(self.num, self.compared) def __cmp__(self, obj): self.compared.append(obj.num) obj.compared.append(self.num) res = cmp(self.num, obj.num) if res==0: self.compared.extend(obj.compared) obj.compared.extend(self.compared) return resdef get_the_last_but_one(L): assert len(L) >= 2 length = len(L) L = [Num(ele) for ele in L] for i in xrange(length-1): ele1, ele2 = L[0], L[1] del L[0], L[0] if ele1<=ele2: L.append(ele1) else: L.append(ele2) assert len(L) == 1 compared = L[0].compared the_last_but_one = min(L[0].compared) return the_last_but_one if __name__ == "__main__": import sys L = sys.argv[1:] if not L: import random L = [random.randint(1, 10) for i in xrange(10)] print L print get_the_last_but_one(L)
1 0
- 最坏情况下,找到n个元素中第二小的元素需要(n-1)+(lgn向上取整+1)
- 在最坏情况下,利用n + ┌lgn┐ - 2 次比较,即可找到 n 个元素中的第2小元素
- 找到n个元素中的第二小元素
- 锦标赛排序之使用n+lgn-2次比较来选出第二小的元素
- 面试解惑-查找n个元素中第二小的元素
- 合并两个长度分别为m和n的有序表,最坏情况下需要比较m+n-1次
- N个元素中取M个的全组合
- 题目2.给出一个算法,它能用O(nlgn)的最坏情况运行时间,确定n个元素的任何排列中逆序对的数目
- 查找n个元素中的第二小元素
- 第九章中位数和顺序统计学 之 “寻找第i小元素之最坏情况线性时间的选择 最坏运行时间就为O(n)算法”
- 从N个元素中取k个元素子集的c++实现
- 从N个元素中取k个元素子集的减治法实现
- 使用回溯法求所有从n个元素中取m个元素的组合
- n个元素中取m个元素的组合、排列问题
- 找n个数字中第k小的元素
- N个元素取出最大(小)的K个元素
- N个元素取出最大(小)的K个元素
- 1-n个元素中查找缺失的一个数
- mysql的utf8mb4设置
- Shell脚本中参数传递方法常用有8种
- linux redis安装
- boost库学习及应用
- 树莓派使用360wifi2实现无线上网
- 最坏情况下,找到n个元素中第二小的元素需要(n-1)+(lgn向上取整+1)
- C语言:运行中获取宏名字的技巧
- 指针理解
- 如何返回一个二维数组
- makefile的调试
- 关于正手拉前冲弧圈球和加转弧圈球的几点领悟
- iBatis简单入门教程
- 简易的日记本
- leetcode204. Count Primes