首页 > 代码库 > 30:根据排序标识flag给数组排序

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 返回值:    void20 输入描述:1、输入需要输入的整型数个数21 输出描述:输出排好序的数字22 输入例子23 824 1 2 4 9 3 55 64 2525 026 输出例子: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             else61             System.out.print(arr[i] + " " );62         }63     }64 }65 class MyComparator implements Comparator<Integer> {66 67     @Override68     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         else77         return 0;78     }79 }

 

30:根据排序标识flag给数组排序