c语言无序数用折中查找法找数
时间: 2024-03-13 08:20:08 浏览: 73
J2kDemo,c语言二叉查找法源码,c语言项目
折中查找法,也叫二分查找法,适用于有序数列,对于无序数列,可以先进行排序后再进行折中查找。
以下是使用折中查找法在无序数列中查找某个数的C语言实现:
```c
#include <stdio.h>
int binarySearch(int arr[], int n, int x)
{
int left = 0, right = n - 1;
while (left <= right)
{
int mid = (left + right) / 2;
if (arr[mid] == x)
return mid;
else if (arr[mid] < x)
left = mid + 1;
else
right = mid - 1;
}
return -1;
}
int main()
{
int arr[] = { 4, 2, 6, 1, 9, 8, 7, 3, 5 };
int n = sizeof(arr) / sizeof(arr[0]);
int x = 6;
int index = binarySearch(arr, n, x);
if (index == -1)
printf("%d not found in the array\n", x);
else
printf("%d found at index %d\n", x, index);
return 0;
}
```
这里的binarySearch函数用于在无序数列arr中查找数x,其中n表示arr中元素个数。程序先将左右边界left和right分别初始化为0和n-1,然后在while循环中进行二分查找,直到找到x或者left>right为止。如果找到了x,则返回其下标mid;否则返回-1表示未找到。
注意,在无序数列中使用折中查找法查找某个数的时间复杂度为O(nlogn),其中n为数列中元素个数。因为需要先对数列进行排序,排序的时间复杂度为O(nlogn),然后再进行折中查找,查找的时间复杂度也是O(nlogn)。因此,如果需要频繁地在无序数列中查找某个数,建议先将数列排序后再进行查找,这样可以提高查找效率。
阅读全文