//只需遍历一次。新人一枚,如果还有更优的算法,还望博友不吝赐教public int[] maxcost() { int [] maxnum=new int[2]; //长度2的数组保存最大和次大数的索引 int maxcost1,maxcost2; //分别保存最大和次大的数 if(group_cost[0]>=group_cost[1]) //先将数组前两个数比较大小后赋值给maxcost { maxcost1=group_cost[0]; maxcost2=group_cost[1]; maxnum[0]=0; maxnum[1]=1; } else { maxcost1=group_cost[1]; maxcost2=group_cost[0]; maxnum[0]=1; maxnum[1]=0; } for(int i=2;i<M;i++) //从第三个数开始遍历 { if(maxcost1<group_cost[i]) //若比当前最大的大则替换,并且将次大的数替换 { maxcost2=maxcost1; maxnum[1]=maxnum[0]; maxcost1=group_cost[i]; maxnum[0]=i; } else if(maxcost2<group_cost[i]) //如果没有最大的大,但是比次大的大,则将次大数替换 { maxcost2=group_cost[i]; maxnum[1]=i; } } return maxnum; }
选择数组中最大或者最小的两个数
最新推荐文章于 2022-08-11 17:38:19 发布