如何在未排序整数数组中找到最大值和最小值?
方法一
遍历一遍未排序整数数组,先初始化一个最大值参数和一个最小值参数(可以都默认是数组的第一个参数)。在遍历的过程中如果比最小值小就进行赋值最小值,如果比最大值大,就对最大值赋值。遍历结束就可以知道最大值和最小值的数据了。 (这个是感觉最优 只需要遍历一次就可以获取到最小值和最大值)
private int[] datas = {1,2,3,4,56,7,8,0,0,3,34,657,778,98};
/**
* 获取数组中的最小值和最大值
*/
private void getMaxAndMin(){
if (datas != null && datas.length > 0){
int min = datas[0];
int max = datas[0];
for (int i = 0; i < datas.length; i++){
if (min > datas[i]){
min = datas[i];
}
if (max < datas[i]){
max = datas[i];
}
}
Log.e("getMaxAndMin", " min = " + min + " max = " + max);
}
}
方法二
将数据进行排序处理,可以使用最优的排序处理(快速排序),获取到排序之后的数组,然后取数组的最前和最后两个值,就是最大值和最小值。(但是这种至少都要遍历一遍以上)