题解 | #输入整型数组和排序标识按升序或降序进行排序#
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;
}
}
}
}
