zoukankan
html css js c++ java
从n个数里面找最大的两个数理论最少需要比较
答案是:n+logn-2
过程是这样的:
甲乙比甲胜出,丙丁比丙胜出,最后甲丙比较,甲胜出。。。容易得出找出最大数为n-1次。
现在开始找出第二大的数字:明显,第二大的数字,一定和甲进行过比较。。。。如图中可能是丙、乙,得出一个规律:除了第一层外,每一层都有一个数字和甲进行过比较,那么n个节点,一共有log(n)+1层,也就是还需要在log(n)个数字里面进行比较log(n)-1次。
综上:共n+log(n)-2次比较。
查看全文
相关阅读:
GCC的gcc和g++的区别
C++运行程序依赖的环境-vcredist_x64.exe
linux账户管理[转自vbird]
Linux 的账号与群组[转自vbird]
文件的搜寻【转vbird】
常用的文件和目录操作命令【转vbird】
十六进制查看器【转】
文件与目录的默认权限与隐藏权限【转vbird】
改变文件属性与权限(转)
Linux目录规范和含义(转)
原文地址:https://www.cnblogs.com/zkfopen/p/10828299.html
最新文章
.NET Framework 简介
3. Longest Substring Without Repeating Characters(无重复字符的最长子串)
448. Find All Numbers Disappeared in an Array(找到所有数组中消失的数字)
android学习笔记----简易音乐播放器原理
android学习笔记----关于图形的基本处理讲解
198. House Robber(打家劫舍)(求不相邻的位置上的数字之和的最大值)
基于堆的优先级队列
android学习笔记----内容提供者
android学习笔记----服务的启动方式、生命周期和aidl的介绍
for-each或迭代器中调用List的remove方法会抛出ConcurrentModificationException的原因
热门文章
android学习笔记----样式、主题、国际化(本地化)、对话框、帧动画
学车记录
7-整数反转
6-Z字形变换
5-最长回文子串
4-寻找两个正序数组的中位数
3-无重复字符的最长子串
strlen用法注意
C++实现Visitor访问者模式 & 头文件循环包含的问题
C++实现责任链模式
Copyright © 2011-2022 走看看