大家看这个计算题还有什么可以优化的地方不?
//定义一个整型数组,求出数组最大值和最小值 并输出结果
public static void minMax(){
int oldArr[] = {1,3,4,5,6,9,6,6,2,5,4,7,6,7,8,5};
int minNum = 0; //最小值
int maxNum = 0; //最大值
for(int i = 0, j = 1; i < oldArr.length ; i ++ ){
if(oldArr[i] > maxNum){
maxNum = oldArr[i];
}
if(minNum == 0){
if(oldArr[i] < oldArr[j]){
minNum = oldArr[i];
}else{
j++;
}
}
}
System.out.println("最小:"+minNum+"最大:"+maxNum);
}
不用任何类、函数,直接用最原始的写法。
--------------------编程问答--------------------
int minNum = oldArr[0];
int maxNum = oldArr[0];
for (int i = 1; i < oldArr.length; i++) {
if (minNum > oldArr[i]) {
minNum = oldArr[i];
}
if (maxNum > oldArr[i]) {
maxNum = oldArr[i];
}
}
第一,没看懂为何要j这个变量
第二,BUG!假设数组是{-1,-2,-3},你可以试试看运行你原先的程序。总之,查找数组最大最小的时候,初始的min/max绝对不要设置成0,而是array[0]。
--------------------编程问答-------------------- public static void main(String[] args) {
int oldArr[] = {1,3,4,5,6,9,6,6,2,5,4,7,6,7,8,5};
int max = oldArr[0],min = oldArr[0];
for(int i = 0;i < oldArr.length;i++ ){
if(oldArr[i] > max)max = oldArr[i];
if(oldArr[i] < min)min = oldArr[i];
}
System.out.println("最大值"+max);
System.out.println("最小值"+min);
}
这应该是最简单的了! --------------------编程问答-------------------- 排个序不就行了???
public static void minMax()
{
int oldArr[] = {1, 3, -1, 4, 5, 6, 9, 6, 6, 2, 5, 4, 7, 6, 7, 8, 5};
Arrays.sort(oldArr);
System.out.println(oldArr[0] + " " + oldArr[oldArr.length - 1]);
} --------------------编程问答-------------------- 对于一个时间复杂度为 O(n) 的算法。
楼主为什么这么执着于他的优化?
其实没必要。
你的代码错了。给你写了个正确的。
--------------------编程问答--------------------
public static void minMax(int[] array) {
int min = array[0];
int max = array[0];
for (int i = 1; i < array.length; i++) {
if ( array[i] > max) {
max = array[i];
}
if ( array[i] < min) {
min = array[i];
}
}
System.out.println("min: " + min + " max: " + max);
}
+1
排序神马的最讨厌了 --------------------编程问答--------------------
不能用函数。 --------------------编程问答--------------------
因为是初学,所以每做一个练习题,都希望能够有人对它提出意见和批评~! --------------------编程问答--------------------
原来如此~技巧+1 --------------------编程问答-------------------- 一个数如果是最大数就肯定不是最小数,反之亦然
所以第2个if可以写成else if,当这个数是最大数时,可以少做1次判断
--------------------编程问答--------------------
public static void minMax(int[] array) {
int min = array[0];
int max = array[0];
for (int i = 1; i < array.length; i++) {
if ( array[i] > max) {
max = array[i];
}
else if ( array[i] < min) {
min = array[i];
}
}
System.out.println("min: " + min + " max: " + max);
}
但是如果没有索引为0的key呢?
我还不知道java里有没有象php一样的关联数组,so…… --------------------编程问答--------------------
java数组下标是从0开始滴
补充:Java , Java SE