题目描述
查找和排序
题目:输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩
都按先录入排列在前的规则处理。
例示:
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();