输入一组数组,该数组长度<=10,输出该数组内的最大值和中间值
比如:输入1,2,3,4;输出max=4,mid=2,3
输入1,2,3;输出max=3,mid=2
var arr=[1,2,5,5];
var i,j,max;
max=arr[0]
for(i=1; i if(arr[i]>max)
max=arr[i];
}
if(arr.length%2==0){
mid=[arr[arr.length/2-1],arr[arr.length/2]];
}else{
mid=arr[Math.floor(arr.length/2)];
}
用Java写的 有点啰嗦 希望可以帮到你
package DD;
import java.util.Scanner;
public class Find {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan=new Scanner(System.in);
System.out.print("Now,please enter the number that can represent the number of the array:");
int number=scan.nextInt();
int[] a=new int[number];
System.out.println("Start to enter numbers:");
for(int i=0;i<number;i++){
a[i]=scan.nextInt();
}
int Mid1=a[number/2];
int Mid2=func1(a,number);
int Max=func2(a,number);
if(number%2==1){
System.out.println("The Max:"+Max+" The Mid:"+Mid2);
}else{
System.out.println("The Nax:"+Max+" The Mid:"+Mid2+" , "+Mid1);
}
}
static int func1(int A[],int n){
if(n%2==1){
int i,j;
for(i=0,j=n-1;i!=j;i++,j--); ;
return A[i];
}
else
return A[n/2-1];
}
static int func2(int A[],int n){
int ii;
for(int j=1;j<n;j++){
if(A[j]>A[0]){
ii=A[j];
A[j]=A[0];
A[0]=ii;
}
}
return A[0];
}
}
不同的语言都提供了Math类完成常用的算术功能的,如果自己实现,先定义一个max变量指向数组的第一个元素,然后依次遍历数组,比较每个元素和max,修正max。
如果用API的话,Java提供的Math方法就有min和max方法。
学习编程还是要靠自己练习呢。
3楼写的挺好的 再加个限制条件 长度小于等于10
public class Test {
public static void main(String[] args){
Integer[] array={5,5454,565,45643};
List list = getMiddleList(array);
if(list.size()>0){
System.out.print("max="+list.get(0)+",min=");
}
for (int i = 1,len=list.size(); i < len; i++) {
if(i==len-1){
System.out.print(list.get(i));
}else{
System.out.print(list.get(i)+",");
}
}
}
public static List getMiddleList(Integer[] array){
List list=new ArrayList();
if(array==null || array.length==0){
return list;
}
Arrays.sort(array);
list.add(array[array.length-1]);
if(array.length==1){
list.add(array[array.length-1]);
}else{
if(array.length%2==0){
list.add(array[array.length/2-1]);
list.add(array[array.length/2]);
}else{
list.add(array[array.length/2]);
}
}
return list;
}
}
如果只使用数组解决问题的话,那么需要排序,无论是选择排序还是冒泡排序,可以直接获取最大值,以及根据数组中元素的个数确定中间值。但是用集合的话就比较简单,因为集合本身具有排序功能。这里给出使用集合的方式的代码:
public class MaxAndMid {
public static void main(String[] args) {
Integer[] arr = {1,9,5,8,7};
String maxAndMid = getMaxAndMid(arr);
System.out.println(maxAndMid);
}
public static String getMaxAndMid(Integer[] arr) {
//将数组转化成集合
List<Integer> list = Arrays.asList(arr);
//数据排序
Collections.sort(list);
String mid = "";
//获取中间的值
int size = list.size();
if( size % 2 != 0){
mid = list.get(size/2) +"";
}else{
mid = list.get(size/2-1) + "," + list.get(size/2);
}
return "max =" + list.get(size-1) + ", " +"mid = "+mid;
}
}
package aa;
import java.util.Arrays;
public class FindArr {
public static void main(String[] args) {
int[] arr = { 1, 2, 5, 4, 3, 6, 9, 7, 8 };
FindArr(arr);
}
static void FindArr(int[] arr) {
if (arr.length > 10) {
System.out.println("长度大于10,不符合要求");
} else {
Arrays.sort(arr);
int lenth = arr.length;
if (lenth % 2 == 1) {
System.out.println("max=" + arr[lenth - 1]);
System.out.println("mid=" + arr[(lenth - 1) / 2]);
} else {
System.out.println("max=" + arr[lenth - 1]);
System.out.print("mid=" + arr[(lenth - 1) / 2] + ",");
System.out.println(arr[(lenth - 1) / 2 + 1]);
}
}
}
}
方法如下:
public static Map getMid(Object[] arr) {
if(arr.length == 0) {
return null;
}
Map<String, Object[]> map = new HashMap<String, Object[]>();
if(arr.length % 2 == 0) {
Arrays.sort(arr);
Object[] max = {arr[arr.length-1]};
map.put("max", max);
Object[] mid = {arr[arr.length/2],arr[arr.length/2+1]};
map.put("mid", mid);
return map;
}else {
Arrays.sort(arr);
Object[] max = {arr[arr.length-1]};
map.put("max", max);
Object[] mid = {arr[arr.length/2]};
map.put("mid", mid);
return map;
}
}
测试如下:
Integer[] arr = {1,5, 8, 4, 32,222, 22222};
System.out.println(getMid(arr).get("mid")[0]);
System.out.println(getMid(arr).get("max")[0]);
结果如下:
8
22222