排序算法是编程中的基础技能之一,而今天要介绍的是一个简单却高效的排序方法——计数排序!它特别适合处理数据范围较小且非负整数的场景。💡
计数排序的核心思想是利用数组下标来记录每个元素出现的次数,然后通过累加的方式确定元素的最终位置。这种方法避免了传统比较排序的复杂度限制(时间复杂度为O(n+k),其中k是数据范围)。✨
以下是计数排序的C++代码实现:
```cpp
include
include
using namespace std;
void countingSort(vector
int maxVal = max_element(arr.begin(), arr.end());
vector
// 统计频率
for (int num : arr) {
count[num]++;
}
// 累加并排序
int index = 0;
for (int i = 0; i <= maxVal; ++i) {
while (count[i] > 0) {
arr[index++] = i;
count[i]--;
}
}
}
int main() {
vector
countingSort(nums);
for (int num : nums) cout << num << " ";
return 0;
}
```
计数排序虽然高效,但也有局限性,比如对负数或大范围数据不太友好。不过,在特定场景下,它无疑是程序员的好帮手!🎉
🌟 小提示:计数排序就像整理书架,只需按顺序摆放即可,轻松又快捷!📚