成绩排序(清华研究生机试编程题)

题目描述

查找和排序

题目:输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩
      都按先录入排列在前的规则处理。

   例示:
   jack      70
   peter     96
   Tom       70
   smith     67

   从高到低  成绩            
   peter     96    
   jack      70    
   Tom       70    
   smith     67    

   从低到高

   smith     67  

   Tom       70    
   jack      70    
   peter     96      

输入描述:

 
   

输入多行,先输入要排序的人的个数,然后输入排序方法0(降序)或者1(升序)再分别输入他们的名字和成绩,以一个空格隔开

输出描述:

 
   

按照指定方式输出名字和成绩,名字和成绩之间以一个空格隔开

示例1

输入

3
0
fang 90
yang 50
ning 70

输出

fang 90
ning 70
yang 50

这道题是道非常简单的基础题,考察的是排序算法。在这道题中我采用了冒泡排序。

代码如下:

package postgraduate;

import java.util.Scanner;

public class SortScores {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int row = scanner.nextInt();
		int sort = scanner.nextInt();
		String name[] = new String[row];
		int scores[] = new int[row];
		for (int i = 0; i < row; i++) {
			name[i] = scanner.next();
			scores[i] = scanner.nextInt();
		}
		if (sort == 0) { // 降序
			for (int i = 0; i < row; i++) {    //降序冒泡排序
				for (int k = i + 1; k < row; k++) {
					if (scores[i] < scores[k]) {
						int temp = scores[i];
						scores[i] = scores[k];
						scores[k] = temp;
						String str = "";
						str = name[i];
						name[i] = name[k];
						name[k] = str;
					}
				}
			}
		} else if (sort == 1) { // 升序
			for (int i = 0; i < row; i++) {   //升序冒泡排序
				for (int k = i + 1; k < row; k++) {
					if (scores[i] > scores[k]) {
						int temp = scores[i];
						scores[i] = scores[k];
						scores[k] = temp;
						String str = "";
						str = name[i];
						name[i] = name[k];
						name[k] = str;
					}
				}
			}
		}
		printSort(name, scores);
	}

	private static void printSort(String[] name, int[] scores) {  //打印结果
		for (int i = 0; i < name.length; i++) {
			if (i == name.length - 1) {
				System.out.print(name[i] + " " + scores[i]);
				break;
			}
			System.out.println(name[i] + " " + scores[i]);
		}

	}

}
在这个程序中,使用了两个数组分别保存名字和分数,涉及字符串的读取使用函数scanner.next();


你可能感兴趣的:(研究生复试编程题)