给定 n 个正整数,统计各个整数的出现次数,并依据整数大小从小到大排序输出C语言
时间: 2024-10-24 22:14:37 浏览: 78
在C语言中,你可以使用哈希表(如数组或结构体数组)来存储每个整数及其出现次数,然后利用冒泡排序(Bubble Sort)或者其他排序算法对它们进行排序。以下是一个简单的示例程序,它首先计算出现次数,然后对结果进行排序:
```c
#include <stdio.h>
// 结构体用于保存整数和其计数
typedef struct {
int num;
int count;
} IntCount;
// 对IntCount数组进行冒泡排序
void bubbleSort(IntCount arr[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - 1 - i; j++) {
if (arr[j].count > arr[j + 1].count) {
// 交换元素
IntCount temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
// 函数统计整数出现次数并排序
void countAndSort(int numbers[], int n) {
IntCount counts[n]; // 假设n <= INT_MAX
// 初始化计数数组
for (int i = 0; i < n; i++) {
counts[i].num = numbers[i];
counts[i].count = 1;
}
// 计算每个整数的出现次数
for (int i = 1; i < n; i++) {
for (int j = 0; j < n - i; j++) {
if (numbers[j] == numbers[j + 1]) {
counts[j].count++;
}
}
}
// 排序并打印结果
bubbleSort(counts, n);
for (int i = 0; i < n; i++) {
printf("%d appears %d times.\n", counts[i].num, counts[i].count);
}
}
int main() {
int numbers[] = {4, 2, 3, 4, 1, 2, 3, 5};
int n = sizeof(numbers) / sizeof(numbers[0]);
countAndSort(numbers, n);
return 0;
}
```
这个程序首先通过两层循环计算每个整数的出现次数,然后使用冒泡排序对`counts`数组进行排序。注意这里假设输入的`n`不会超过`IntCount`数组的长度。
阅读全文