数据结构二分查找法c
时间: 2023-11-26 21:46:52 浏览: 32
以下是C语言实现二分查找的代码示例:
```c
#include <stdio.h>
int binarySearch(int arr[], int l, int r, int x) {
while (l <= r) {
int mid = l + (r - l) / 2;
if (arr[mid] == x)
return mid;
if (arr[mid] < x)
l = mid + 1;
else
r = mid - 1;
}
return -1;
}
int main() {
int arr[] = {2, 3, 4, 10, 40};
int n = sizeof(arr) / sizeof(arr[0]);
int x = 10;
int result = binarySearch(arr, 0, n - 1, x);
(result == -1) ? printf("Element is not present in array")
: printf("Element is present at index %d", result);
return 0;
}
```
相关问题
数据结构:实现二分查找的递归算法,要求,随机产生100个随机整数,使用选择排序法对其排序,然后用二分查找的递归,使用C语言完成
好的,以下是实现二分查找的递归算法的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函数。
算法与数据结构 c语言描述 第3版张乃孝pdf
《算法与数据结构 C语言描述》第3版是张乃孝所著的一本关于算法和数据结构的教材,主要使用C语言进行描述和实现。该书内容详细全面,适合初学者和有一定编程基础的读者学习和参考。
该书主要分为两个部分,第一部分介绍了算法和数据结构的基本概念和原理,包括线性表、栈、队列、串、数组、广义表、树、图等。通过详细的解释和示例代码,读者可以理解数据结构的基本原理和操作,同时学会使用C语言进行实现。
第二部分是算法设计和分析部分,讲述了常见的算法设计方法和策略,如递归、分治法、贪心法、动态规划等。同时,还介绍了常见的排序算法、查找算法、图算法等,包括冒泡排序、选择排序、插入排序、快速排序、二分查找、最短路径算法等。每个算法都有详细的解释和示例代码,方便读者理解和实践。
此外,该书还介绍了如何评价和分析算法效率,包括时间复杂度、空间复杂度和平均情况、最坏情况、最好情况的分析方法。这对于读者理解算法的效率和性能有很大帮助,并且能够在实际编程中选择更优的算法。
总之,《算法与数据结构 C语言描述》第3版是一本综合性的教材,适合初学者和有一定编程基础的读者学习和参考。通过学习该书,读者不仅可以理解算法和数据结构的基本原理,还可以学会如何用C语言实现这些算法和数据结构,并且能够评价和分析算法的效率和性能。