当前位置: 首页 > news >正文

洛谷P1177【模板】排序:十种排序算法全解(2)

我们接着上一篇继续讲【洛谷P1177【模板】排序:十种排序算法全解(1)】

三、计数排序(Counting Sort)

仅适用于数据范围较小的情况

// Java
import java.io.*;
public class Main {static final int OFFSET = 100000;public static void main(String[] args) throws IOException {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));int n = Integer.parseInt(br.readLine());String[] strs = br.readLine().split(" ");int[] cnt = new int[200001];for (int i = 0; i < n; i++) cnt[Integer.parseInt(strs[i]) + OFFSET]++;StringBuilder sb = new StringBuilder();for (int i = 0; i <= 200000; i++) while (cnt[i]-- > 0) sb.append(i - OFFSET).append(" ");System.out.println(sb);}
}
# Python
n = int(input())
nums = list(map(int, input().split()))
min_val, max_val = min(nums), max(nums)
offset = -min_val
count = [0] * (max_val - min_val + 1)
for num in nums:count[num + offset] += 1
sorted_arr = []
for i in range(len(count)):sorted_arr.extend([i - offset] * count[i])
print(' '.join(map(str, sorted_arr)))
// C
#include <stdio.h>
#include <limits.h>
int main() {int n;scanf("%d", &n);int min_val = INT_MAX, max_val = INT_MIN;int arr[n];for (int i = 0; i < n; i++) {scanf("%d", &arr[i]);if (arr[i] < min_val) min_val = arr[i];if (arr[i] > max_val) max_val = arr[i];}int size = max_val - min_val + 1;int* count = calloc(size, sizeof(int));for (int i = 0; i < n; i++) count[arr[i] - min_val]++;for (int i = 0; i < size; i++)while (count[i]-- > 0) printf("%d ", i + min_val);return 0;
}

相关文章:

  • 23种设计模式-创建型模式之原型模式(Java版本)
  • [Java EE] Spring 配置 和 日志
  • 嵌入式面试题解析:常见基础知识点详解
  • spring Ai---向量知识库(一)
  • [Java · 初窥门径] Java API 文档使用说明
  • 青少年编程与数学 02-016 Python数据结构与算法 29课题、自然语言处理算法
  • 【家政平台开发(60)】数据驱动:数据分析与应用深度解析
  • 边生成边训练:构建合成数据驱动的在线训练系统设计实战
  • Cache优化原则
  • MCP协议用到的Node.js 和 npm npx
  • 【SAP ME 45】并发SFC拆分导致 SFC_STEP中的QTY_IN_QUEUE与SFC表中的QTY不一致
  • 【Flutter动画深度解析】性能与美学的完美平衡之道
  • PrintWriter 类详解
  • Python:使用web框架Flask搭建网站
  • php实现zip压缩
  • 作业2 CNN实现手写数字识别
  • C++入门小馆: 深入string类
  • 藏品馆管理系统
  • Spring Boot 中基于 Reactor 的服务器端事件(SSE)推送机制实践
  • Linux系统:详解进程等待wait与waitpid解决僵尸进程
  • 成都两宗宅地成功出让,民企四川联投溢价33%竞得郫都区宅地
  • 中国与柬埔寨签署多领域合作文件
  • 西安雁塔区委书记王征拟任市领导班子副职,曾从浙江跨省调任陕西
  • 石中英已任新成立的清华大学教育学院院长
  • 商务部:试点示范已形成9批190多项创新成果向全国推广
  • 全球前瞻|中国印尼举行首次“2+2”部长级会议,美乌将签署矿产协议