使用c语言分别实现冒泡排序和快速排序算法,数组元素为随机生成10个100以内的整型数。
时间: 2024-12-02 22:22:07 浏览: 10
当然可以,以下是使用C语言分别实现冒泡排序和快速排序算法的例子。这里我们假设已经有一个函数`generate_random_numbers()`用于生成10个100以内的随机整数。
**冒泡排序(Bubble Sort)**:
```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 - 1 - i; 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] = generate_random_number(0, 100);
printf("Element %d: %d\n", i, arr[i]);
}
printf("\nBefore sorting:\n");
for (int i = 0; i < 10; i++) {
printf("%d ", arr[i]);
}
bubble_sort(arr, 10);
printf("\nAfter Bubble Sort:\n");
for (int i = 0; i < 10; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
**快速排序(Quick Sort)**:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// 分区函数,返回值为基准元素的新位置
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++;
// 交换元素
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
// 将基准元素放在正确的位置
int temp = arr[i + 1];
arr[i + 1] = arr[high];
arr[high] = temp;
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() {
// ... 生成并打印随机数组内容
quick_sort(arr, 0, 9);
printf("\nAfter Quick Sort:\n");
// ... 打印排序后的数组
}
```
在`main`函数中,你需要自己实现`generate_random_number()`函数,它接收两个参数,表示范围的下限和上限。以上代码展示了基本的排序过程,实际应用中可能需要处理边界条件和其他细节。
阅读全文