C语言分别编写函数输入数组元素(输入-9999表示结束)、从小到大排序数组元素、用二分法在有序数组中查找(返回下标)
时间: 2024-01-15 13:04:29 浏览: 186
下面是C语言的代码实现:
```c
#include <stdio.h>
int inputArray(int arr[]) {
int i = 0;
while (1) {
scanf("%d", &arr[i]);
if (arr[i] == -9999) {
break;
}
i++;
}
return i;
}
void sortArray(int arr[], int n) {
int i, j, temp;
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++) {
if (arr[i] > arr[j]) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
int binarySearch(int arr[], int n, int key) {
int left = 0, right = n - 1, mid;
while (left <= right) {
mid = (left + right) / 2;
if (arr[mid] == key) {
return mid;
} else if (arr[mid] > key) {
right = mid - 1;
} else {
left = mid + 1;
}
}
return -1;
}
int main() {
int arr[100];
int n = inputArray(arr);
sortArray(arr, n);
printf("The sorted array is: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
int key;
printf("Enter the number you want to search: ");
scanf("%d", &key);
int index = binarySearch(arr, n, key);
if (index == -1) {
printf("%d not found in the array.\n", key);
} else {
printf("%d found at index %d.\n", key, index);
}
return 0;
}
```
该程序包括三个函数:
1. `inputArray`:输入数组元素,并返回数组长度;
2. `sortArray`:将数组元素从小到大排序;
3. `binarySearch`:在有序数组中查找给定的元素,返回元素的下标,如果找不到则返回-1。
程序先调用 `inputArray` 函数输入数组元素,再调用 `sortArray` 函数将数组元素从小到大排序,然后提示用户输入要查找的数字,调用 `binarySearch` 函数在排序后的数组中查找该数字。最后输出查找结果。
阅读全文
相关推荐
















