"""练习 12:对 0 到 100 范围内的整数进行计数排序并统计频次。 输入:第一行 n,第二行 n 个整数。 学习说明: - 计数排序适合整数取值范围较小且已知的情况;counts[i] 记录数字 i 出现的次数。 - 遍历输入时先检查数值范围,再把对应计数加一。 - 从 0 到 100 顺序查看计数,把每个数重复 count 次,便得到升序列表。 - 最后一段只打印出现次数不为 0 的数字。 """ n = int(input()) values = list(map(int, input().split()))[:n] counts = [0] * 101 # 统计每个数字出现的次数;范围检查防止下标超出计数表。 for value in values: if not 0 <= value <= 100: raise ValueError("所有输入值必须在 0 到 100 之间") counts[value] += 1 sorted_values = [] # 按数值从小到大展开频次,完成排序。 for value, count in enumerate(counts): sorted_values.extend([value] * count) print("sorted:", *sorted_values) print("frequencies:") for value, count in enumerate(counts): if count: print(value, count)