基本思想
- 每次比较两个相邻的的元素,如果他们的顺序错误就把他们交换过来
Bean
public class Bean {
int score;
String name;
public Bean(int score, String name) {
super();
this.score = score;
this.name = name;
}
}
主程序
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
/**
* @author NIWA
* 桶排序
*
* 依次输入5个数字,冒泡排序
*/
public class Main {
List<Bean> list = new ArrayList<>();
public static void main(String[] args) {
Main mMain = new Main();
mMain.scanf();
mMain.sort();
mMain.print();
}
private void print() {
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i).name+list.get(i).score);
}
}
/**
* 输入数据
* */
private void scanf() {
Scanner sc1 =new Scanner(System.in);
int n = sc1.nextInt();
for(int i = 0;i < n; i++){
list.add(i, new Bean(0, null));
}
for (int i = 0; i < n; i++) {
Scanner sc2 = new Scanner(System.in);
list.get(i).name = sc2.next();
Scanner sc3 = new Scanner(System.in);
list.get(i).score = sc3.nextInt();
}
}
/**
* 冒泡排序/
*/
private void sort() {
for (int i = 0; i < list.size()-1; i++) {//假如有n个数,只需要进行n-1次
for (int j = 0; j < list.size() - i -1; j++) {
if(list.get(j).score > list.get(j+1).score){//从小到大排序
Collections.swap(list, j, j+1);//交换list数据
}
}
}
}
}
测试
输入3,代表排3个数
a
2
b
3
c
4
输出的是a2 b3 c4
并且解决了桶排序不能有重复分数出现的问题