双向序列
思路:
这道题的意思就是有n个数,是从1到n,和m次操作,
每次操作输入一个p和q,p是0的时候把1到q降序排,p是1的时候把q到n升序排。
代码实现:
import java.util.Arrays;
import java.util.Scanner;
import javax.xml.transform.Source;
//双向序列
public class Main4 {
static int[] arr = null;
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int m = scanner.nextInt();
arr = new int[n];
int num = 1;
for (int i = 0; i < n; i++) {
arr[i] = num;
num++;
}
System.out.println(Arrays.toString(arr));
//0--> 1~q降序 1--> q~n升序
Scanner sc = new Scanner(System.in);
for (int i = 0; i < m; i++) {
String str = sc.nextLine();
String[] sp = str.split(" ");
int s = Integer.parseInt(sp[0]);//操作
int q = Integer.parseInt(sp[1]); //q下标
//1~q降序
setArr(s,q); //操作数组
//q~n升序
}
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
public static void setArr(int s,int q) {
if (s == 0 ) {
//数组指定下标进行降序排序 从大到小
for (int i = 0; i < q; i++) {
for (int j = 0; j < q-i-1; j++) {
if (arr[j]<arr[j+1]) {
int temp= arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}else if (s == 1) { //对数组q~n进行升序排序 从小到大
Arrays.sort(arr,q-1,arr.length);
}
}
}