- 基数排序(Radix Sort)是一种非比较型的排序算法,它根据数字的每一位进行排序。以下是一个基数排序的C++实现示例:
#include<iostream>
using namespace std;
int getMax(int arr[], int n) {
int max = arr[0];
for (int i = 1; i < n; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
return max;
}
void countSort(int arr[], int n, int exp) {
int output[n];
int count[10] = {
0};
for (int i = 0; i < n; i++) {
count[(arr[i] / exp) % 10]++;
}
for (int i = 1; i < 10; i++) {
count[i] += count[i - 1];
}
for (int i = n - 1; i >= 0; i--) {
output[count[(arr[i] / exp) % 10] - 1] = arr[i];
count[(arr[i] / exp) % 10]--;
}
for (int i = 0; i < n; i++) {
arr[i] = output[i];
}
}
void radixSort(int arr[], int n) {
int max = getMax(arr, n);
for (int exp = 1; max / exp > 0; exp *= 10) {
countSort(arr, n, exp);
}
}
void printArray(int arr[], int n) {
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
cout << endl;
}
int main() {
int arr[] = {
170, 45, 75, 90, 802, 24, 2, 66};
int n = sizeof(arr) / sizeof(arr[0]);
radixSort(arr, n);
cout << "RadixSorted Array:" << endl;
printArray(arr, n);
return 0;
}
C:\Users\Administrator\CLionProjects\untitled1\cmake-build-debug\untitled1.exe
RadixSorted Array:
2 24 45 66 75 90 170 802
Process finished with exit code 0
- 这是一个简单的基数排序实现示例,通过计数排序对数组按照每个位数进行排序。在主函数中,我们定义一个待排序的数组arr,然后调用radixSort函数对数组进行排序。最后,我们打印排序后的数组。
- 希望这个示例能够帮助到你!