c++四位数排序代码
时间: 2024-10-04 12:02:40 浏览: 18
在C++中,你可以使用标准库提供的`sort()`函数对四位数进行排序。这里是一个简单的示例,我们将四位数存储在一个数组中,并按照数值大小进行升序排列:
```cpp
#include <iostream>
#include <algorithm> // 包含sort函数
using namespace std;
// 定义四位数结构体,包含整数成员
struct FourDigitNumber {
int num;
};
bool compareFourDigitNumbers(FourDigitNumber a, FourDigitNumber b) {
return a.num < b.num; // 比较两个四位数,从小到大
}
int main() {
FourDigitNumber numbers[] = { {9876}, {5432}, {1000}, {7654} }; // 数组中的元素可以初始化为具体的四位数
const int size = sizeof(numbers) / sizeof(numbers[0]);
sort(numbers, numbers + size, compareFourDigitNumbers); // 使用自定义比较函数对数组进行排序
for (int i = 0; i < size; ++i) {
cout << numbers[i].num << " ";
}
cout << endl; // 输出排序后的结果
相关问题
基数排序步骤及c++代码
基数排序是一种按照位数进行排序的算法,适用于非负整数的排序。下面是基数排序的步骤及C++代码示例:
步骤:
1. 找到待排序数组中的最大值,并确定最大值的位数,记为max_digits。
2. 创建10个桶数组,用于存储每个位数上的元素,初始化为空。
3. 从低位到高位,对每个位数进行排序:
- 将待排序数组中的元素按照当前位数的值放入对应的桶中。
- 将每个桶中的元素按顺序合并到一个临时数组中。
- 将临时数组复制回待排序数组。
4. 重复第3步,直到对max_digits位数进行排序完成。
C++代码示例:
```cpp
#include <iostream>
#include <vector>
using namespace std;
int getMax(int arr[], int n) {
int max_val = arr[0];
for (int i = 1; i < n; i++) {
if (arr[i] > max_val) {
max_val = arr[i];
}
}
return max_val;
}
void countingSort(int arr[], int n, int exp) {
vector<int> output(n);
int count[10] = {0};
// 统计当前位数上各个元素的出现次数
for (int i = 0; i < n; i++) {
count[(arr[i] / exp) % 10]++;
}
// 对count[]进行累加
for (int i = 1; i < 10; i++) {
count[i] += count[i - 1];
}
// 将元素放入临时数组output[]中正确的位置
for (int i = n - 1; i >= 0; i--) {
output[count[(arr[i] / exp) % 10] - 1] = arr[i];
count[(arr[i] / exp) % 10]--;
}
// 将临时数组output[]复制回原数组arr[]
for (int i = 0; i < n; i++) {
arr[i] = output[i];
}
}
void radixSort(int arr[], int n) {
int max_val = getMax(arr, n);
// 对每个位数进行排序
for (int exp = 1; max_val / exp > 0; exp *= 10) {
countingSort(arr, n, exp);
}
}
int main() {
int arr[] = {170, 45, 75, 90, 802, 24, 2, 66};
int n = sizeof(arr) / sizeof(arr[0]);
radixSort(arr, n);
cout << "排序后的数组:";
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
```
这段代码实现了基数排序算法,对给定的非负整数数组进行排序。运行后输出排序后的数组:2 24 45 66 75 90 170 802。
用c++写基数排序的代码
下面是用 C 语言写的基数排序的代码:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define BASE 10
// 获取数字 num 的第 k 位数字
int get_digit(int num, int k) {
for (int i = 1; i < k; i++) {
num /= BASE;
}
return num % BASE;
}
// 对数组 arr 进行基数排序
void radix_sort(int *arr, int size) {
// 最大位数
int max_digits = 0;
for (int i = 0; i < size; i++) {
int digits = 0;
int num = arr[i];
while (num > 0) {
digits++;
num /= BASE;
}
if (digits > max_digits) {
max_digits = digits;
}
}
// 从低位到高位进行排序
for (int k = 1; k <= max_digits; k++) {
// 创建桶
int *bucket = (int *)calloc(BASE, sizeof(int));
// 计算每个数字在第 k 位出现的次数
for (int i = 0; i < size; i++) {
bucket[get_digit(arr[i], k)]++;
}
// 将桶内的数字依次放回原数组
for (int i = 1; i < BASE; i++) {
bucket[i] += bucket[i - 1];
}
int *sorted = (int *)malloc(size * sizeof(int));
for (int i = size - 1; i >= 0; i--) {
int digit = get_digit(arr[i], k);
sorted[--bucket[digit]] = arr[i];
}
memcpy(arr, sorted, size * sizeof(int));
free(sorted);
free(bucket);
}
}
int main() {
int arr[] = {329, 457, 657, 839, 436, 720, 355};
int size = sizeof(arr) / sizeof(arr[0]);
radix_sort(arr, size);
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
基数排序是一种非比较型排序算法,它通过将数