参考
【算法1-2】排序 - 题单 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
- P1271 【深基9.例1】选举学生会
- P1177 【模板】排序
- P1923 【深基9.例4】求第 k 小的数
- P1059 [NOIP2006 普及组] 明明的随机数
- P1093 [NOIP2007 普及组] 奖学金
- P1781 宇宙总统
- P2676 [USACO07DEC] Bookshelf B
- P1116 车厢重组
- P1152 欢乐的跳
- P1068 [NOIP2009 普及组] 分数线划定
- P5143 攀爬者
- P1104 生日
- P1012 [NOIP1998 提高组] 拼数
计数排序
P1271 【深基9.例1】选举学生会
桶排序
package al1_2;
import java.util.Scanner;
public class P1271 {
public static void main(String[] args) {
// algo 桶排序
// 每次投票的结果可能值为1-999,所以定义桶的个数为999个
// 每次投票后都把对应结果的桶的值+1,最后从下标递增输出桶的下标(如果该桶值=0,表示没有该桶的投票,则不用输出)
// 例如投票221,那么桶值为:1、2、0、0……,输出为1、2、2
// 桶的值表示这种结果出现了几次,并且最后是根据下标输出,达到了排序的效果
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int m = scanner.nextInt();
int[] t = new int[1000];
while (m > 0) {
int num = scanner.nextInt();
t[num]++;
m--;
}
for (int i = 0; i < t.length; i++) {
while (t[i] > 0) {
// 注意这里输出的是i(桶对应的结果值),而不是输出桶的值
System.out.printf("%d ", i);
t[i]--;
}
}
scanner.close();
}
}
快速排序
P1923 【深基9.例4】求第 k 小的数
快速排序求第k个小的数,每次排序完之后数轴值在全部顺序内的位置被固定,所以判断数轴值是不是在全部顺序内第k个即可
package al1_2;
import java.util.Arrays;
import java.util.Scanner;
public class P1923 {
private static int[] nums;
private static int n