不要进行排序, 直接找出一个数组中的最大值和最小值, (百度的时候还会出现, 次大值的情况)
面试的时候被问到, 直接找数组中的最大值和最小值, 一时居然想不起来咋搞, 就比较尴尬, 特此记录一下,
答 : 使用快速排序
问 : 如果是十万条数据呢, 都排序一遍, 我只是想取个最大值或者最小值而已.
一时语塞
直接进行数据的比较不就好了, 这么简单…
哎…
上代码:
public class NumMAXTest {
public static void main(String[] args) {
int[] num = {1,2,3,4,6,5,7,8,-10,-9,1,2,3,4,6,5,7,8,-10,-9,-11,19};
//int[] num = {};
FindMAXAndMIN findMAXAndMIN = new FindMAXAndMIN(num);
System.out.println("长度为:" + findMAXAndMIN.getLength());
System.out.println("此数组最大值为: " + findMAXAndMIN.getMaxNum());
System.out.println("此数组最小值为: " + findMAXAndMIN.getMinNum());
}
}
class FindMAXAndMIN {
private int[] num;
private int max_num;
private int min_num;
public FindMAXAndMIN(int[] num) {
this.num = num;
}
public int getMaxNum() {
if (num.length == 0) {
throw new ArrayStoreException("数组长度为0");
}
max_num = num[0];
for (int i=0; i<num.length; i++) {
if (num[i] > max_num){
max_num = num[i];
}
}
return max_num;
}
public int getMinNum() {
if (num.length == 0) {
throw new ArrayStoreException("数组长度为0");
}
min_num = num[0];
for (int i=0; i<num.length; i++) {
if (num[i] < min_num){
min_num = num[i];
}
}
return min_num;
}
public int getLength() {
return num.length;
}
}
就是直接比较就好了吧!!!