30:根据排序标识flag给数组排序
题目描述:输入整型数组和排序标识,对其元素按照升序或降序进行排序
接口说明
原型:
void sortIntegerArray(Integer[] pIntegerArray, int iSortFlag);
输入参数:
Integer[] pIntegerArray:整型数组
int iSortFlag:排序标识:0表示按升序,1表示按降序
输出参数: 无
返回值: void
输入描述:1、输入需要输入的整型数个数
输出描述:输出排好序的数字
输入例子
8
1 2 4 9 3 55 64 25
0
输出例子:
1 2 3 4 9 25 55 64
注意:在while循环里申请数组以及变量,函数调用处理也在循环里,否则会出现 “数组越界的错误“
下面的代码仍然有错,牛客运行说结果不对,在大量测试用例里,说结果输出多了好多,前边有一段(正确结果)是一样的,至今不知道错误在哪。
这个题也可以用两个数组,另外一个数组result[]存放排序后的数组,当flag==0,原数组copy到result,flag==1,倒过来复制到result
1 package huawei2; 2 3 import java.lang.reflect.Array; 4 import java.util.Arrays; 5 import java.util.Comparator; 6 import java.util.Scanner; 7 8 import javax.naming.spi.DirStateFactory.Result; 9 10 /*题目描述 11 输入整型数组和排序标识,对其元素按照升序或降序进行排序 12 接口说明 13 原型: 14 void sortIntegerArray(Integer[] pIntegerArray, int iSortFlag); 15 输入参数: 16 Integer[] pIntegerArray:整型数组 17 int iSortFlag:排序标识:0表示按升序,1表示按降序 18 输出参数: 无 19 返回值: void 20 输入描述:1、输入需要输入的整型数个数 21 输出描述:输出排好序的数字 22 输入例子 23 8 24 1 2 4 9 3 55 64 25 25 0 26 输出例子: 27 1 2 3 4 9 25 55 64*/ 28 public class SortArrayAccordingFlag { 29 30 public static void main(String[] args) { 31 Scanner in = new Scanner(System.in); 32 33 34 while(in.hasNext()) 35 { 36 int count = in.nextInt(); 37 Integer arr[] = new Integer[count]; 38 for(int i = 0;i<count;i++) 39 { 40 arr[i] = in.nextInt(); 41 } 42 int flag = in.nextInt(); 43 sortIntegerArray(arr, flag); 44 } 45 //sortIntegerArray(arr,flag); 46 } 47 48 private static void sortIntegerArray(Integer[] arr, int flag) { 49 if(flag == 0)//从小到大 50 { 51 Arrays.sort(arr); 52 } 53 if(flag == 1) 54 { 55 Arrays.sort(arr, new MyComparator()); 56 } 57 for(int i = 0 ; i < arr.length; i++) 58 { 59 if(i == arr.length-1)System.out.print(arr[i]); 60 else 61 System.out.print(arr[i] + " " ); 62 } 63 } 64 } 65 class MyComparator implements Comparator<Integer> { 66 67 @Override 68 public int compare(Integer o1, Integer o2) { 69 if(o1.intValue() < o2.intValue()) 70 { 71 return 1; 72 }else if(o1.intValue() > o2.intValue()) 73 { 74 return -1; 75 } 76 else 77 return 0; 78 } 79 }