1.输入随机生成0≦x≦109数组,长度分别为5、10、100; 2.采用三种排序(快速排序、归并排序、自选一类排序算法)输出每次执行的排序结果,给出c代码
时间: 2024-10-14 07:15:20 浏览: 22
首先,为了生成0到10^9范围内的随机整数数组,并指定长度分别为5、10和100,我们可以使用C语言的标准库`<stdlib.h>`中的`rand()`函数配合`srand()`设置随机种子。这里是一个简单的例子:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void generate_array(int *arr, int len) {
srand(time(0)); // 设置随机种子
for (int i = 0; i < len; ++i) {
arr[i] = rand() % 1000000000;
}
}
// 排序函数模板
void quick_sort(int *arr, int left, int right);
void merge_sort(int *arr, int left, int right);
void selection_sort(int *arr, int len);
int main() {
int small_arr[5], medium_arr[10], large_arr[100];
// 生成随机数组
generate_array(small_arr, 5);
generate_array(medium_arr, 10);
generate_array(large_arr, 100);
printf("Sorted arrays:\n");
quick_sort(small_arr, 0, 4); // 快速排序
printf("Quick sort result: ");
for (int i : small_arr) {
printf("%d ", i);
}
printf("\n");
merge_sort(medium_arr, 0, 9); // 归并排序
printf("Merge sort result: ");
for (int i : medium_arr) {
printf("%d ", i);
}
printf("\n");
selection_sort(large_arr, 100); // 自选排序算法(这里是选择排序)
printf("Selection sort result: ");
for (int i : large_arr) {
printf("%d ", i);
}
printf("\n");
return 0;
}
```
对于排序函数,上面的代码只给出了基本框架,实际的快速排序、归并排序和自选排序(在这里我们选择了选择排序,因为它是简单易懂的示例)的代码需要分别实现。以下是这三个排序算法的基本版本:
```c
void quick_sort(int *arr, int left, int right) {
// 实现快速排序...
}
void merge_sort(int *arr, int left, int right) {
// 实现归并排序...
}
void selection_sort(int *arr, int len) {
for (int i = 0; i < len - 1; ++i) {
int min_idx = i;
for (int j = i + 1; j < len; ++j) {
if (arr[j] < arr[min_idx]) {
min_idx = j;
}
}
if (min_idx != i) {
int temp = arr[i];
arr[i] = arr[min_idx];
arr[min_idx] = temp;
}
}
}
```
请注意,上述代码只是一个简化的演示,并未包含完整的排序函数实现,实际编写时你需要填充这些部分。同时,由于篇幅原因,我并未提供自选排序算法的具体实现,你可以将其替换为其他你喜欢的排序算法,如插入排序、堆排序等。
阅读全文