[藍橋杯][演算法提高VIP]前10名 Java陣列,list升序,降序,逆序函式Collections.sort和Arrays.sort的使用

一葉之修發表於2019-03-07

list升序,降序,逆序 
List<Integer>list =new ArrayList<Integer>(); 
//如果list是 5 7 2 6 8 1 4 
1、升序: 
Collections.sort(list) //list: 1 2 4 5 6 7 8 
2、降序: 
Collections.sort(list,Collections.reverseOrder())//list:8 7 6 5 4 2 1

3、逆序; 
Collections.reverse(list)//list:4 1 8 6 2 7 5

陣列升序,降序 
int[] a={5 7 2 6 8 1 4} 
1、升序: 
Arrays.sort(a)//a: 1 2 4 5 6 7 8

2、降序: (一定要注意呼叫Collections.reverseOrder()需要是Integer[],而不是int[])

Integer[] a={5 7 2 6 8 1 4} 
Arrays.sort(a,Collections.reverseOrder())//a: 8 7 6 5 4 2 1

補充: 
Arrays.asList(陣列)//將陣列轉成list 
Arrays.asList(a); 
List<Integer>list =new ArrayList<Integer>(Arrays.asList(a));
 

下面來個逆序例題

原題:[藍橋杯][演算法提高VIP]前10名

題目描述

資料很多,但我們經常只取前幾名,比如奧運只取前3名。現在我們有n個資料,請按從大到小的順序,輸出前10個名資料。 

資料規模和約定 
10< =n< =200,各個整數不超出整型範圍 
 

輸入

兩行。 
第一行一個整數n,表示要對多少個資料 
第二行有n個整數,中間用空格分隔。表示n個資料。 

輸出

一行,按從大到小排列的前10個資料,每個資料之間用一個空格隔開。 

樣例輸入

26 
54  27  87  16  63  40  40  22  61  6  57  70  0  42  11  50  13  5  56  7  8  86  56  91  68  59 

樣例輸出

91 87 86 70 68 63 61 59 57 56 
import java.util.Arrays;
import java.util.Collections;
import java.util.Scanner;

public class 前10名 {

	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int n = in.nextInt();
		Integer[] a = new Integer[n];
		for(int i=0;i<n;i++)
			a[i] = in.nextInt();
		Arrays.sort(a, Collections.reverseOrder());
		for(int i=0;i<10;i++)
			if(i==9)
				System.out.println(a[i]);
			else
				System.out.print(a[i]+" ");
	}

}

 

 

相關文章