回答

收藏

Java程序在数组中查找第二大数字

技术问答 技术问答 221 人阅读 | 0 人回复 | 2023-09-12

给出一个未排序的数组,你需要在数组中找到它o(n) 时间复杂度第二大元素。
2 O/ G& s  m( Z+ T6 u3 v例如:) x$ E7 K* K5 n0 C% u  g
int[] arr1={7,5,6,1,4,2};Second largest element in the array :6              
6 X  B) ?  Z' j. F- |( j/ J    解决方案:                                                               
! A) E4 i5 D" [8 y                                                                您可以对数组进行排序,然后返回数组中倒数的第二个元素,但这将是 o ( nlogn )  时间内完成,& b% S) P7 b# z2 `: t8 A
算法:
' Z0 B  T1 d1 _3 d/ `最小可能值初始化最高和第二最高。
3 N; ?! d2 I' k  }( u% c1 w% c0 V0 {迭代数组。
+ z/ B# q$ g  Z1 c9 Z! y+ z' p如果当前元素大于最高元素$ B* O# e( M' I# b( K( T/ g0 f: ?( I
分配 secondHighest = 最高) ]1 m' f5 G9 f
分配最高 = currentElement

8 a7 S7 x3 W8 [7 a& G  x9 ]8 E否则,如果当前元素大于 否则secondHighest) o' \" f. B) o- I1 ~4 M. s- V8 O/ V; A
分配 secondHighest = 当前元素。
在数组中找到第二大数 Java 程序:
+ g1 a' m* @) i: ~! ]创建名为主 Java 类 FindSecondLargestMain.java
1 |& v" P7 {6 {  L+ ]  ZFindSecondLargestMain.java3 @- p1 i1 W5 e5 y
package org.arpit.java2blog;public class FindSecondLargestMain    public static void main(String args[])           int[] arr1={7,5,6,1,4,2};    int secondHighest=findSecondLargestNumberInTheArray(arr1);System.out.println(&quot;Second largest element in the array : &quot;  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  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;    }}当您操作上述程序时,您将获得以下输出:
7 l8 y. |% K3 f) M" pSecond largest element in the array : 6这就是如何在数组中找到第二大数字的全部内容。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则