C语言键盘输入N个整数和要查找的x,先将N个数从小到大排序 然后用二分查找找到x,输出排序后的数及查找的结果
时间: 2024-11-28 21:25:16 浏览: 38
在C语言中,你可以通过以下几个步骤来实现这个功能:
1. **获取输入**:
使用`scanf`函数让用户输入N(表示整数的数量),然后使用一个循环(例如`for`或`while`)读取N个整数,并存储在一个数组中。
```c
int n, arr[100]; // 假设最多输入100个整数
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
```
2. **排序数组**:
使用快速排序、冒泡排序或选择排序等算法对数组进行升序排列。这里以快速排序为例:
```c
quicksort(arr, 0, n - 1); // 快速排序函数
```
3. **二分查找**:
定义一个二分查找函数,它接受已排序的数组、起始索引和结束索引作为参数,寻找目标值x。如果找到就返回其索引,否则返回-1。
```c
int binarySearch(int arr[], int low, int high, int x) {
if (high >= low) {
int mid = low + (high - low) / 2;
if (arr[mid] == x)
return mid;
if (arr[mid] > x)
return binarySearch(arr, low, mid - 1, x);
return binarySearch(arr, mid + 1, high, x);
}
return -1;
}
```
4. **查找结果并输出**:
调用二分查找函数并打印结果:
```c
int result = binarySearch(arr, 0, n - 1, x);
if (result != -1) {
printf("Sorted array: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
printf("Element %d found at index %d\n", x, result);
} else {
printf("Element not found in the sorted array.\n");
}
```
阅读全文