C++实现基数排序算法(完整源码)
基数排序是一种非比较排序算法,它的原理是将待排序元素拆分成多个关键字进行排序。它通常使用桶来进行排序,因此也被称为桶排序。基数排序的时间复杂度为O(d(n+k)),其中d为位数,n为元素个数,k为进制数。
下面是C++实现基数排序的完整源码和相应的描述:
#include <iostream>
#include <vector>
using namespace std;
int getMaxNum(vector<int> arr) {
int max_num = arr[0];
for (int i = 1; i < arr.size(); i++) {
if (arr[i] > max_num) {
max_num = arr[i];
}
}
return max_num;
}
void countingSort(vector<int>& arr, int exp) {
vector<int> output(arr.size());
vector<int> count(10, 0);
for (int i = 0; i < arr.size(); i++) {
count[(arr[i]/exp)%10]++;
}
for (int i = 1; i < 10; i++) {
count[i] += count[i-1];