数据结构:实现二分查找的递归算法,要求,随机产生100个随机整数,使用选择排序法对其排序,然后用二分查找的递归,使用C语言完成
时间: 2024-03-14 13:46:08 浏览: 21
好的,以下是实现二分查找的递归算法的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void selection_sort(int *numbers, int n) {
for (int i = 0; i < n; i++) {
int min_index = i;
for (int j = i+1; j < n; j++) {
if (numbers[j] < numbers[min_index]) {
min_index = j;
}
}
int temp = numbers[i];
numbers[i] = numbers[min_index];
numbers[min_index] = temp;
}
}
int binary_search_recursion(int *numbers, int left, int right, int target) {
if (left > right) {
return 0;
}
int mid = (left + right) / 2;
if (target == numbers[mid]) {
return 1;
} else if (target < numbers[mid]) {
return binary_search_recursion(numbers, left, mid-1, target);
} else {
return binary_search_recursion(numbers, mid+1, right, target);
}
}
int main() {
int n = 100;
int numbers[n];
srand(time(NULL));
for (int i = 0; i < n; i++) {
numbers[i] = rand() % 1000 + 1;
}
selection_sort(numbers, n);
int target = rand() % 1000 + 1;
if (binary_search_recursion(numbers, 0, n-1, target)) {
printf("%d exists in the list.\n", target);
} else {
printf("%d does not exist in the list.\n", target);
}
return 0;
}
```
代码中使用了选择排序法将随机整数数组进行排序,然后使用二分查找的递归算法查找目标值是否存在于数组中。注意,为了保证每次生成的随机数不同,使用了srand函数和time函数。