c语言生成随机数并存入数组,然后进行选择排序,再进行二分查找
时间: 2023-08-04 09:37:03 浏览: 94
下面是生成随机数、进行选择排序、进行二分查找的完整代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void selection_sort(int arr[], int n);
int binary_search(int arr[], int n, int x);
int main()
{
int i, n, x, result;
int arr[10];
// 初始化随机数种子
srand(time(NULL));
// 生成随机数并存入数组
for (i = 0; i < 10; i++) {
arr[i] = rand() % 100; // 生成 0~99 的随机数
}
// 输出未排序的随机数数组
printf("Original array:\n");
for (i = 0; i < 10; i++) {
printf("%d ", arr[i]);
}
printf("\n");
// 进行选择排序
selection_sort(arr, 10);
// 输出排序后的数组
printf("Sorted array:\n");
for (i = 0; i < 10; i++) {
printf("%d ", arr[i]);
}
printf("\n");
// 进行二分查找
printf("Enter the value to search: ");
scanf("%d", &x);
result = binary_search(arr, 10, x);
if (result == -1) {
printf("Value not found.\n");
} else {
printf("Value found at index %d.\n", result);
}
return 0;
}
// 选择排序函数
void selection_sort(int arr[], int n)
{
int i, j, min_idx, temp;
for (i = 0; i < n-1; i++) {
min_idx = i;
for (j = i+1; j < n; j++) {
if (arr[j] < arr[min_idx]) {
min_idx = j;
}
}
// Swap the minimum element with the first element
temp = arr[i];
arr[i] = arr[min_idx];
arr[min_idx] = temp;
}
}
// 二分查找函数
int binary_search(int arr[], int n, int x)
{
int left = 0, right = n-1, mid;
while (left <= right) {
mid = (left + right) / 2;
if (arr[mid] == x) {
return mid;
} else if (arr[mid] < x) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
```
代码中,首先生成了 10 个 0~99 的随机数,然后进行选择排序,最后使用二分查找函数查找指定的值。注意,在进行二分查找前,必须先对数组进行排序,否则二分查找无法正常工作。
阅读全文