c语言 利用随机函数rand()生成10个在区间【1,20】内的各不相同的·整数,分别用冒泡排序与选择排序对数组排序后输出。
时间: 2023-06-04 21:02:05 浏览: 86
好的,这是一个关于c语言的问题,可以回答。以下是代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void bubble_sort(int arr[], int n);
void selection_sort(int arr[], int n);
int main()
{
int arr[10];
srand(time(NULL));
// 生成10个不重复的随机数
for (int i = 0; i < 10; i++)
{
int num;
do
{
num = rand() % 20 + 1;
// 检查是否与前面生成的数重复
int flag = 0;
for (int j = 0; j < i; j++)
{
if (arr[j] == num)
{
flag = 1;
break;
}
}
if (!flag)
{
arr[i] = num;
break;
}
} while (1);
}
// 冒泡排序
bubble_sort(arr, 10);
printf("冒泡排序结果:");
for (int i = 0; i < 10; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
// 选择排序
selection_sort(arr, 10);
printf("选择排序结果:");
for (int i = 0; i < 10; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
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;
}
}
}
}
void selection_sort(int arr[], int n)
{
for (int i = 0; i < n - 1; i++)
{
int min_index = i;
for (int j = i + 1; j < n; j++)
{
if (arr[j] < arr[min_index])
{
min_index = j;
}
}
if (min_index != i)
{
int temp = arr[i];
arr[i] = arr[min_index];
arr[min_index] = temp;
}
}
}
```
希望这个答案能够帮到你!
阅读全文