c语言找出数组中第二大的数 找出N个数组中第二大的数,需要比较多少次?
找出N个数组中第二大的数,需要比较多少次?比较次数最少的理论从n个数中找出最大的两个数是:n logn-2分析1:类似于竞争推广,配对比较,胜者再次配对,最后得到冠军(最大数),这可以看作是一个二叉树
找出N个数组中第二大的数,需要比较多少次?
比较次数最少的理论从n个数中找出最大的两个数是:n logn-2分析1:类似于竞争推广,配对比较,胜者再次配对,最后得到冠军(最大数),这可以看作是一个二叉树。以4个人为例:0020123,我们可以看到比较的最大次数是n-1。那么第二大的数字必须是与冠军相比的数字,所以很明显,每层有一个,所以有logn-1比较。所以总共是n logn-2比较。分析二:泡泡法找出最大比较数是n-1,然后在前面的每次比较结果中找出第二大数,比较数是logn,需要减去最后一次比较的最大数,即找到第二个数是logn-1,结果是n logn-2。