使用java从一个整数数组中查找第二大的数,仅用一次循环,不使用java自带的排序

package com.jxb.test;

public class FindSecMax {

	public int findSecMax(int[] data) {

		int maxNum = 0;
		int secMaxNum = 0;
		// 先将前两个元素按大小分别赋给第一大和第二大的数
		if (data.length < 2)
			return -1;
		if (data[0] >= data[1]) {
			maxNum = data[0];
			secMaxNum = data[1];
		} else {
			maxNum = data[1];
			secMaxNum = data[0];
		}
		// 从第三个开始循环,如果元素大于最大值,则最大值更新,原最大值赋给第二大值
		// 如果该元素不大于最大值,且大约第二大的值,则第二大的值更新
		for (int i = 2; i < data.length; i++) {
			if (data[i] > maxNum) {
				secMaxNum = maxNum;
				maxNum = data[i];
			} else {
				if (data[i] >= secMaxNum) {
					secMaxNum = data[i];
				}
			}
		}

		return secMaxNum;

	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		FindSecMax fsm = new FindSecMax();
		int[] a = new int[] { 10, 9,9, -70000, -90000, -600000,
				-500000, -32769 };
		System.out.println(fsm.findSecMax(a));

	}

}

你可能感兴趣的:(java)