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 }
原文地址:https://www.cnblogs.com/newcoder/p/5811813.html