编程之美 2.10 扩展问题:求数组中给的第二大数
题目如下:
如果需要找出N个数组中的第二大数,需要比较多少次呢?是否可以使用过类似的分治思想来降低比较的次数呢?
解法一
我们最容易想到的方法就是:我们数组进行排序,取倒数第二个数即为所求。但是比较次数是很高的,不可取。
解法二
用2个中间变量来保存最大值和第二大的值,遍历一次数组即可得到最大值和第二大的值。比较次数为:2*N
实现代码如下:
package com.wrh.firstpro;
import java.util.Arrays;
/*
* 寻找数组中的第二大值
* */
public class ProgrammingBeautiful_2_2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int arr[]={
20,1,5,7,4,8,9};
/*
* 保存数组中的最大值
* */
int max;
/*
* 保存数组中的第二大值
* */
int