为了账号安全,请及时绑定邮箱和手机立即绑定

为啥第三个for循环没能实现排序呀,或者大家有其他实现排序的方法吗

import java.util.Arrays;
public class HelloWorld {
    public static void main(String[] args) {
        HelloWorld hello = new HelloWorld();
        int[] rank = {89, -23, 64, 91, 119, 52, 73};
        hello.getArrays(rank);
    }//定义方法完成成绩排序并输出前三名的功能
    public int[] getArrays(int []rank) {
        int max3=rank[0];
        int max2=rank[0];
        int max1=rank[0];

        int[] nums = {1, 2, 3};

        for (int i = 0; i < rank.length-1; i++) {
            if (rank[i] > 1 && rank[i] < 100) {
               if (rank[0] < rank[i]) {
                max1 = rank[i];
            }
        }
        }
        for (int i = 0; i < rank.length-1; i++) {
            if (rank[0] <rank[i]&&rank[i]<max1) {
                if (rank[i] > 1 && rank[i] < 100) {
                    max2 =rank[i];
                }
            }
        }
        for(int i=1;i<rank.length;i++){
            if(rank[i]>rank[i]){
                max3=rank[i];
            }
        }
        nums[0]=max1;nums[1]=max2;nums[2]=max3;
        System.out.println(Arrays.toString(nums));
        return nums;
    }
}



然后输出的是91 89 89?

正在回答

5 回答

是减一


0 回复 有任何疑惑可以回复我~

 int[] nums = new int[] { 61, 23, 4, 74, 13, 148, 20 };
   
 int max = nums[0]; // 假定最大值为数组中的第一个元素
 int min = nums[0]; // 假定最小值为数组中的第一个元素
 double sum = 0;// 累加值
 double avg = 0;// 平均值
   
 for (int i = 0; i <= nums.length-1; i++) { // 循环遍历数组中的元素
    // 如果当前值大于max,则替换max的值
 if(max<nums[i])
    max=nums[i];
   
    // 如果当前值小于min,则替换min的值
    if(min>nums[i])
    min=nums[i];
    sum=sum+nums[i];
   
    }
         
          // 求平均值
         avg=sum/nums.length;
         
    System.out.println("数组中的最大值:" + max);
    System.out.println("数组中的最小值:" + min);
    System.out.println("数组中的平均值:" + avg);
   length后面必须加一;

1 回复 有任何疑惑可以回复我~

https://img1.sycdn.imooc.com//5c46e1be00018ac706190564.jpg最易懂的冒泡排序

0 回复 有任何疑惑可以回复我~

你可以使用Arrays.sort(数组名);来给数组排序(升序)

Arrays类是数组的实现类,里面提供了很多操作数组的方法,非常方便使用!有兴趣可以去了解一下。

如果想要用循环来给数组排序的话,必须要使用双重for循环哦,我所知道的有冒泡排序和选择排序两种,你可以在网上搜索,有很多博客都介绍了这两种排序方式的用法。

1 回复 有任何疑惑可以回复我~
import java.util.Arrays;
public class Demo { /**  * @param args  */ 
public static void main(String[] args) { 
 // TODO Auto-generated method stub         
      int scores[]={89,-23,64,91,119,52,73}; 
      Demo mo=new Demo();        
      mo.sortScore(scores); 
   } 
   public void sortScore(int[] scores) { 
    // TODO Auto-generated method stub  
    Arrays.sort(scores);  
    for(int i=scores.length-1,sum=0;i>=0&&sum<3;i--){   
    if(scores[i]<0||scores[i]>100)    
    continue;   
    System.out.println(scores[i]);
       sum++;    
       } 
      }
    }

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为啥第三个for循环没能实现排序呀,或者大家有其他实现排序的方法吗

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信