用C语言实现利用随机函数产生N>=50个随机整数,至少用三种不同的排序方法进行排序
时间: 2024-02-17 19:00:06 浏览: 62
好的,我来回答你的问题。
首先,我们可以使用C语言的rand()函数来生成随机整数,具体代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
int N = 50; // 生成50个随机整数
int arr[N]; // 存放随机整数的数组
srand(time(NULL)); // 设置随机数种子
// 生成随机整数
for (int i = 0; i < N; i++) {
arr[i] = rand();
}
// TODO: 进行排序
return 0;
}
```
接下来,我们可以使用三种不同的排序方法进行排序,比如选择排序、冒泡排序和快速排序。下面是这三种排序方法的具体实现:
选择排序:
```c
void selection_sort(int arr[], int len) {
int min_index, temp;
for (int i = 0; i < len-1; i++) {
min_index = i;
for (int j = i+1; j < len; j++) {
if (arr[j] < arr[min_index]) {
min_index = j;
}
}
temp = arr[i];
arr[i] = arr[min_index];
arr[min_index] = temp;
}
}
```
冒泡排序:
```c
void bubble_sort(int arr[], int len) {
int temp;
for (int i = 0; i < len-1; i++) {
for (int j = 0; j < len-i-1; j++) {
if (arr[j] > arr[j+1]) {
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
```
快速排序:
```c
void quick_sort(int arr[], int left, int right) {
if (left >= right) {
return;
}
int i = left, j = right, pivot = arr[left];
while (i < j) {
while (i < j && arr[j] >= pivot) {
j--;
}
arr[i] = arr[j];
while (i < j && arr[i] <= pivot) {
i++;
}
arr[j] = arr[i];
}
arr[i] = pivot;
quick_sort(arr, left, i-1);
quick_sort(arr, i+1, right);
}
```
最后,我们在主函数中依次调用这三种排序方法:
```c
int main() {
int N = 50; // 生成50个随机整数
int arr[N]; // 存放随机整数的数组
srand(time(NULL)); // 设置随机数种子
// 生成随机整数
for (int i = 0; i < N; i++) {
arr[i] = rand();
}
// 选择排序
selection_sort(arr, N);
// 冒泡排序
bubble_sort(arr, N);
// 快速排序
quick_sort(arr, 0, N-1);
// 输出排序后的数组
for (int i = 0; i < N; i++) {
printf("%d\n", arr[i]);
}
return 0;
}
```
希望能够帮助到你!
阅读全文