程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在最多n + log 2(n)-2个比较中找到数组中的第二大数字大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决在最多n + log 2(n)-2个比较中找到数组中的第二大数字?

开发过程中遇到在最多n + log 2(n)-2个比较中找到数组中的第二大数字的问题如何解决?下面主要结合日常开发的经验,给出你关于在最多n + log 2(n)-2个比较中找到数组中的第二大数字的解决方法建议,希望对你解决在最多n + log 2(n)-2个比较中找到数组中的第二大数字有所启发或帮助;
  1. 首先比较n个元素数组中奇数和偶数位置的元素,然后确定每对中的最大元素。此步骤需要n / 2个比较。现在您只有n / 2个元素。继续逐对比较以获得n / 4,n / 8,…个元素。找到最大元素时停止。此步骤总共需要进行n / 2 + n / 4 + n / 8 + … + 1 = n-1个比较。
  2. 在上一步中,立即将最大元素与log 2(n)其他元素进行比较。您可以在log²(n)-1比较中确定这些元素中的最大元素。那将是数组中的第二大数字。

例:由8个数字组成的数组[10,9,5,4,11,100,120,110]。

在级别1上进行比较:[10,9]-> 10 [5,4]-> 5,[11,100]-> 100, -> 120。

在级别2上进行比较:[10,5]-> 10 -> 120。

在级别3上进行比较: -> 120。

最大值为120。立即与之比较:10(在3级上),100(在2级上),110(在1级上)。

步骤2应该找到最大值10、100和110。即110。这是第二大元素。

解决方法

作为输入,您将得到n个不同数字的未排序数组,其中n是2的幂。给出一种算法,该算法标识数组中第二大的数字,并且最多使用N + log 2(n)-2个比较。

大佬总结

以上是大佬教程为你收集整理的在最多n + log 2(n)-2个比较中找到数组中的第二大数字全部内容,希望文章能够帮你解决在最多n + log 2(n)-2个比较中找到数组中的第二大数字所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:+log