Java程序找到数组中的第二大数字

时间:2020-02-23 14:34:12  来源:igfitidea点击:

在本教程中,我们将看到如何在数组中找到第二大数字。

问题 :

鉴于未蚀刻的数组,我们需要在数组中找到第二大元素

o(n)时间复杂性。

例如:

int [] arr1 = {7,5,6,1,4,2};阵列中的第二大元素:6

解决方案:

我们可以对数组进行排序,然后返回数组中的第二个最后一个元素,但它将在O(NLogn)时间内完成,

算法:

  • 以最小可能的值初始化最高和最终点。
  • 迭代阵列。
  • 如果当前元素大于最高值
  • 分配extwhighest =最高
  • 分配最高= CurrentElement
  • 否则,如果当前元素大于最终点
  • 分配第二个最终元素。

Java程序找到阵列中的第二大数字:

创建名为的主java类 FindSecondLargestMain.java

package org.igi.theitroad;
 
public class FindSecondLargestMain {
	public static void main(String args[])
	{
		int[] arr1={7,5,6,1,4,2};
		int secondHighest=findSecondLargestNumberInTheArray(arr1);
		System.out.println("Second largest element in the array : "+ secondHighest);
	}
 
	public static int findSecondLargestNumberInTheArray(int array[])
	{
		//Initialize these to the smallest value possible
		int highest = Integer.MIN_VALUE;
		int secondHighest = Integer.MIN_VALUE;
 
		//Loop over the array
		for (int i = 0; i < array.length; i++) { 
            //If current element is greater than highest 
            if (array[i] > highest) {
 
				//assign second highest element to highest element 
				secondHighest = highest;
 
				//highest element to current element
				highest = array[i];
			} else if (array[i] > secondHighest && array[i]!=highest)
				//Just replace the second highest
				secondHighest = array[i];
		}
 
		//After exiting the loop, secondHighest now represents the second
		//largest value in the array
		return secondHighest;
	}
}

运行上面的程序时,我们将得到以下输出:

阵列中的第二大元素:6