以下是使用静态数组实现桶排序和计数排序的示例代码:
#include
#include
const int MAX_VALUE = 10000; // 桶的最大值
void bucketSort(int arr[], int n) {
int bucket[MAX_VALUE] = {0}; // 初始化桶
for (int i = 0; i < n; i++) {
bucket[arr[i]]++; // 将元素放入对应的桶中
}
for (int i = 0, j = 0; i < MAX_VALUE; i++) {
while (bucket[i] > 0) {
arr[j++] = i; // 将桶中的元素按顺序放回原数组
bucket[i]--;
}
}
}
int main() {
int arr[] = {4, 2, 7, 1, 3, 5};
int n = sizeof(arr) / sizeof(arr[0]);
bucketSort(arr, n);
std::cout << "Sorted array: ";
for (int i = 0; i < n; i++) {
std::cout << arr[i] << " ";
}
std::cout << std::endl;
return 0;
}
#include
const int MAX_VALUE = 10000; // 数组的最大值
void countingSort(int arr[], int n) {
int count[MAX_VALUE] = {0}; // 初始化计数数组
for (int i = 0; i < n; i++) {
count[arr[i]]++; // 统计每个元素的出现次数
}
int index = 0;
for (int i = 0; i < MAX_VALUE; i++) {
while (count[i] > 0) {
arr[index++] = i; // 按顺序放回原数组
count[i]--;
}
}
}
int main() {
int arr[] = {4, 2, 7, 1, 3, 5};
int n = sizeof(arr) / sizeof(arr[0]);
countingSort(arr, n);
std::cout << "Sorted array: ";
for (int i = 0; i < n; i++) {
std::cout << arr[i] << " ";
}
std::cout << std::endl;
return 0;
}
这两种方法都使用了静态数组来实现桶排序和计数排序,而不使用动态内存分配。