定义一个数组,10个元素,生成0~100的随机整数,然后将数组元素从大到小排序后,再输出排序后的结果。要求使用两种不同的排序办法。
时间: 2024-10-29 16:09:29 浏览: 10
要完成这个任务,我们可以使用两种常见的排序算法:冒泡排序(简单直观但效率较低)和快速排序(效率高但需要递归)。下面是分别用这两种算法实现的C语言代码:
**使用冒泡排序:**
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void bubble_sort(int arr[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
int main() {
srand(time(0)); // 初始化随机数种子
int arr[10];
for (int i = 0; i < 10; i++) {
arr[i] = rand() % 101; // 生成0~100的随机整数
}
printf("Original array:\n");
for (int i = 0; i < 10; i++) {
printf("%d ", arr[i]);
}
printf("\n");
bubble_sort(arr, 10);
printf("Sorted array in descending order using Bubble Sort:\n");
for (int i = 0; i < 10; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
**使用快速排序:**
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// 快速排序辅助函数
void swap(int* a, int* b) {
int t = *a;
*a = *b;
*b = t;
}
int partition(int arr[], int low, int high) {
int pivot = arr[high];
int i = (low - 1);
for (int j = low; j <= high - 1; j++) {
if (arr[j] > pivot) {
i++;
swap(&arr[i], &arr[j]);
}
}
swap(&arr[i + 1], &arr[high]);
return (i + 1);
}
void quick_sort(int arr[], int low, int high) {
if (low < high) {
int pi = partition(arr, low, high);
quick_sort(arr, low, pi - 1);
quick_sort(arr, pi + 1, high);
}
}
int main() {
srand(time(0));
int arr[10];
for (int i = 0; i < 10; i++) {
arr[i] = rand() % 101;
}
printf("Original array:\n");
for (int i = 0; i < 10; i++) {
printf("%d ", arr[i]);
}
printf("\n");
quick_sort(arr, 0, 9);
printf("Sorted array in descending order using Quick Sort:\n");
for (int i = 0; i < 10; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
运行这些程序,你会看到原始数组以及它们被排序后(从大到小)的结果。
阅读全文