1. 程式人生 > >牛客網———成績排序

牛客網———成績排序

這道題我不會做,程式碼轉自網路上的大佬

查詢和排序

題目:輸入任意(使用者,成績)序列,可以獲得成績從高到低或從低到高的排列,相同成績
都按先錄入排列在前的規則處理。

示例:
jack      70
peter     96
Tom       70
smith     67

從高到低  成績 
peter     96 
jack      70 
Tom       70 
smith     67

從低到高

smith     67

jack      70 
Tom      70 
peter     96

 

連結:https://www.nowcoder.com/questionTerminal/0383714a1bb749499050d2e0610418b1
來源:牛客網

import java.util.Scanner;
 
/**
* 成績排序
* @author special
* @date 2017年12月18日 下午11:35:31
*/ public class Pro01 { private static String[] names; private static int[] grades; private static boolean compare(int i, int j, int flag){ return flag == 0 ? grades[i] > grades[j] : grades[i] < grades[j]; } private static void exch(int i, int j){ String tempS
= names[j]; int tempG = grades[j]; names[j] = names[i]; grades[j] = grades[i]; names[i] = tempS; grades[i] = tempG; } public static void sort(int flag){ for(int i = 1; i < names.length; i++) for(int j = i; j > 0 && compare(j,j - 1,flag); j--){ exch(j,j - 1); } } public static void main(String[] args) { // TODO Auto-generated method stub Scanner input = new Scanner(System.in); while(input.hasNext()){ int n = input.nextInt(); int flag = input.nextInt(); names = new String[n]; grades = new int[n]; for(int i = 0; i < n; i++){ names[i] = input.next(); grades[i] = input.nextInt(); } sort(flag); for(int i = 0; i < n; i++){ System.out.println(names[i] + " " + grades[i]); } } } }