题解 | #输入整型数组和排序标识按升序或降序进行排序#

https://www.nowcoder.com/practice/dd0c6b26c9e541f5b935047ff4156309

排序方法使用插入排序法,重点在于判断排序要求是升序还是降序
插入排序的循环中,单层循环的结束条件分别是:
升序:values[j]>=values[j-1]
降序:values[j]<=values[j-1]

我们把升序降序用一个boolean值表示,即flag,false代表升序,true代表降序
!(values[j]>=values[j-1])==flag
易验证,不论是要求升序或者降序,当j和j-1已经满足排序要求时,该表达式为真,即可结束单层循环。

import java.util.Scanner;
public class Main {
    public static void main(String... args) {
        Scanner in = new Scanner(System.in);
        int count=in.nextInt();
        int []values=new int[count];
        for(int i=0;i<count;i++)
            values[i]=in.nextInt();
        boolean flag=in.nextInt()==0?false:true;
        sort(flag,values);
        for(int i=0;i<count;i++)
            System.out.print(values[i]+" ");

    }

    public static void sort(boolean flag,int []values){//flag,false代表升序,true代表降序
        for(int i=1;i<values.length;i++){
            for(int j=i;j>0;j--){
                if(!(values[j]>=values[j-1])==flag)//此处是判断升序or降序的重点
                    break;
                int t=values[j];
                values[j]=values[j-1];
                values[j-1]=t;
            }
        }
    }
}


全部评论

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务