找出一个数组中既不是最大的数也不是最小的数,我的java代码如下(错误的):
class NotMM{
public void NotMM(int arr[]){
int mid = arr[0];
for(int i=0;i<arr.length-2;i++){
if(arr[i+1]>arr[i]&&arr[i+1]<arr[i+2]){
mid = arr[i+1];
}else if(arr[i+1]<arr[i]&&arr[i+1]>arr[i+2]){
mid = arr[i+1];
}else if(arr[i]<arr[i+1]&&arr[i]>arr[i+2]){
mid = arr[i];
}else if(arr[i]>arr[i+1]&&arr[i]<arr[i+2]){
mid = arr[i];
}else{
mid = arr[i+2];
}
System.out.println(mid);
}
}
}
public class Ex1_4 {
public static void main(String[] args) {
NotMM m = new NotMM();
int arr[] = new int[]{2,4,6,1,7,5,3,8};
m.NotMM(arr);
}
}
请大侠改正,用简单的算法,谢谢!
排序之后掐头去尾,然后随机选一个
额。问个问题,就是"只要既不是最大也不是最小就满足条件"吗
先对数组进行升序或降序排序,排好序不要数组两端的值就可以啦
可以先排序,再取中间元素
Arrays.sort(arr);
mid=arr[arr.length()/2];
可以先排序,再取中间元素
Arrays.sort(arr);
mid=arr[arr.length()/2];
如果只找出一个就可以,那很简单啊。。
只要取前三个数就可以了。。。
如果是找出所有,那就和找出最大最小数完全一致=_=
感觉题目出的好奇怪。。
if(arr.length<3) {
throw new RuntimeException("无法取得匹配结果");
} else {
return Math.min(arr[0],arr[1],arr[2]);
}
其实就是去掉最大和最小数的剩下的数,首先可以用冒泡排序,然后再截取数组中间的部分!
这个可以吧