上一篇
在众多排序算法中,C++计数排序是一种非常高效的线性时间排序方法。它适用于特定场景,尤其当待排序数据范围较小时,性能远超常见的比较类排序(如快速排序、归并排序)。本教程将手把手带你理解并实现计数排序,即使你是编程小白也能轻松掌握!
计数排序算法不是基于元素比较的排序方式,而是通过统计每个元素出现的次数,再根据这些信息直接确定元素在输出数组中的位置。因此,它的核心思想是“用空间换时间”。
下面是一个完整的、易于理解的C++排序教程示例代码:
#include <iostream>#include <vector>#include <algorithm>void countingSort(std::vector<int>& arr) { if (arr.empty()) return; // 1. 找出最大值和最小值 int minVal = *std::min_element(arr.begin(), arr.end()); int maxVal = *std::max_element(arr.begin(), arr.end()); // 2. 创建计数数组 std::vector<int> count(maxVal - minVal + 1, 0); // 3. 统计每个元素出现的次数 for (int num : arr) { count[num - minVal]++; } // 4. 重构原数组(非稳定版本,简单直观) int index = 0; for (int i = 0; i < count.size(); ++i) { while (count[i]-- > 0) { arr[index++] = i + minVal; } }}// 测试函数int main() { std::vector<int> arr = {4, 2, 2, 8, 3, 3, 1}; std::cout << "排序前: "; for (int x : arr) std::cout << x << " "; std::cout << std::endl; countingSort(arr); std::cout << "排序后: "; for (int x : arr) std::cout << x << " "; std::cout << std::endl; return 0;} 通过本篇C++计数排序教程,你应该已经掌握了这种高效排序算法的基本原理与实现方法。虽然它有使用限制,但在合适场景下(如成绩排序、年龄排序等小范围整数排序),它是最佳选择之一。希望这篇C++排序教程能帮助你夯实算法基础!
关键词回顾:C++计数排序、计数排序算法、C++排序教程、线性时间排序。
本文由主机测评网于2025-12-12发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025126661.html