上述全部用代码实现
时间: 2024-02-29 07:52:21 浏览: 81
好的,下面是使用C++代码实现基排序算法和计数排序算法的例子:
```c++
#include <iostream>
#include <vector>
#include <ctime>
#include <cstdlib>
using namespace std;
// 计数排序
void countingSort(vector<int>& nums, int exp) {
vector<int> count(10, 0); // 用于统计每个元素出现的次数
vector<int> output(nums.size()); // 存放排序后的结果
// 统计每个元素出现的次数
for (int i = 0; i < nums.size(); i++) {
count[(nums[i] / exp) % 10]++;
}
// 计算小于等于每个元素的元素个数
for (int i = 1; i < 10; i++) {
count[i] += count[i - 1];
}
// 将每个元素放置到有序序列中对应的位置
for (int i = nums.size() - 1; i >= 0; i--) {
output[count[(nums[i] / exp) % 10] - 1] = nums[i];
count[(nums[i] / exp) % 10]--;
}
// 将排序后的结果复制到原序列中
for (int i = 0; i < nums.size(); i++) {
nums[i] = output[i];
}
}
// 基排序
void radixSort(vector<int>& nums) {
// 找到最大数的位数
int max_num = *max_element(nums.begin(), nums.end());
int exp = 1; // 用于控制按位排序的位数
while (max_num / exp > 0) {
countingSort(nums, exp); // 对每一位进行稳定排序
exp *= 10;
}
}
int main() {
// 生成随机数
srand((unsigned)time(NULL));
vector<int> nums(10);
for (int i = 0; i < 10; i++) {
nums[i] = rand() % 100;
cout << nums[i] << " ";
}
cout << endl;
// 基排序
radixSort(nums);
// 输出排序结果
for (int i = 0; i < 10; i++) {
cout << nums[i] << " ";
}
cout << endl;
return 0;
}
```
希望这段代码能够对你有所帮助!
阅读全文
相关推荐















