问答详情
源自:6-6 编程练习

为啥第三个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?

提问者:Mars3649278 2018-11-08 23:56

个回答

  • 慕前端8136698
    2019-02-08 13:59:34

    是减一


  • 慕前端8136698
    2019-02-08 13:58:47

     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后面必须加一;

  • 这鱼又溺水了
    2019-01-22 17:26:50

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

  • 雀雀you
    2018-11-14 11:01:17

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

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

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

  • 心之向阳Z
    2018-11-09 17:28:59

    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++;    
           } 
          }
        }