已有一个10个元素的整形数组a,且按值从小到大有序。输入一个整数x,然后在数组中查找x,如果找到,输出相应的下标,否则,输出\"not found\"。。 要求编写函数int bsearch(int *p
时间: 2023-04-25 11:01:10 浏览: 133
int bsearch(int *p, int x, int n){
int left = , right = n-1;
while(left <= right){
int mid = (left + right) / 2;
if(p[mid] == x){
return mid;
}
else if(p[mid] < x){
left = mid + 1;
}
else{
right = mid - 1;
}
}
return -1;
}
//调用方式
int a[10] = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19};
int x = 7;
int index = bsearch(a, x, 10);
if(index == -1){
printf("not found");
}
else{
printf("index = %d", index);
}
相关问题
、 二分法查找。设已有一个10个元素的整形数组a,且按值从小到大有序排列。输入一个整数x,然后在数组中查找x,如果找到,输出相应的下标,否则,输出“Not Found”。
下面是使用二分法查找的 Python3 代码实现:
```python
def binary_search(a, x):
left, right = 0, len(a) - 1
while left <= right:
mid = (left + right) // 2
if a[mid] == x:
return mid
elif a[mid] < x:
left = mid + 1
else:
right = mid - 1
return -1
a = [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
x = 7
index = binary_search(a, x)
if index != -1:
print(f"Found {x} at index {index}")
else:
print("Not Found")
```
输出结果为:
```
Found 7 at index 3
```
如果要查找的元素不在数组中,输出结果为:
```
Not Found
```
用c语言完成程序已知有9个整数已按从小到大的顺序排列,它们分别是:10,21,44,56,63
假设我们已经有一个包含这9个整数的整形数组arr[9],并且已经按从小到大的顺序排列好了。
首先我们可以用冒泡排序法对这个数组进行排序,使得数组中的元素按照从小到大的顺序排列。冒泡排序法的基本思想是比较相邻的两个元素,如果前面的元素大于后面的元素,则交换它们的位置。我们重复这个过程,直到整个数组都是有序的。
下面是用C语言实现冒泡排序的代码:
#include <stdio.h>
void bubbleSort(int arr[], int n) {
int i, j;
for (i = 0; i < n-1; i++) {
for (j = 0; j < n-i-1; j++) {
if (arr[j] > arr[j+1]) {
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
int main() {
int arr[9] = {10, 21, 44, 56, 63};
bubbleSort(arr, 9);
printf("排序后的数组为:");
for (int i = 0; i < 9; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
运行以上代码后,输出结果为:10 21 44 56 63。
这样我们就使用C语言完成了一个按照从小到大顺序排列的整数数组。
阅读全文