找出一个整形数组中第二大的数字
Posted 今天学什么
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了找出一个整形数组中第二大的数字相关的知识,希望对你有一定的参考价值。
如何在时间复杂度为O(n)内找出数组中第二大的数字?
通过设置两个变量,一个保存最大值,一个保存第二大值,通过在找最大值的过程中,原来的最大值逐渐变为第二大值。一种实现代码如下(Java版):
1 /** 2 * 在时间复杂度为O(n)内找出数组的第二大的数字 3 * @author JiaJoa 4 * 5 */ 6 public class Algorithm_GetSecondMax { 7 8 public static void main(String[] args) { 9 // TODO Auto-generated method stub 10 int[] data = {3,2,5,1,6,4,7}; 11 System.out.println(Algorithm_GetSecondMax.getSecondMax(data)); 12 } 13 14 //通过设置两个变量,一个保存最大值,一个保存第二大值, 15 //通过在找最大值的过程中,原来的最大值逐渐变为第二大值, 16 public static int getSecondMax(int[] data){ 17 int first_max = data[0]; 18 int second_max = Integer.MIN_VALUE; 19 for(int i=1;i<data.length;i++){ 20 if(data[i]>first_max){ 21 second_max = first_max; 22 first_max = data[i]; 23 }else{ 24 if(data[i]>second_max) 25 second_max = data[i]; 26 } 27 } 28 return second_max; 29 } 30 }
以上是关于找出一个整形数组中第二大的数字的主要内容,如果未能解决你的问题,请参考以下文章
用Java找出一个整数数组中最大的值,并返回最大值的数组下标,尤其是有两个或是三个最大值时