编写算法,实现对n个关键字的序列进行调整,使得序列中奇数排在偶数的前面,要求算法需要一个辅助空间,时间复杂度为0(n),使用折半查找法查找输入的某个关键字是否存在的c语言代码
时间: 2024-03-04 10:49:39 浏览: 106
C语言程序设编写程序在数组中查找一个数要求 ⑴用顺序查找实现 ⑵用折半查找实现。 注:若有该数,则输出该数,否则输出“无此数”。
5星 · 资源好评率100%
以下是给出的C语言代码实现:
1. 实现奇偶数调整:
```c
void adjust(int arr[], int n) {
int i = 0, j = n - 1;
while (i < j) {
while (i < j && arr[i] % 2 != 0) i++;
while (i < j && arr[j] % 2 == 0) j--;
if (i < j) {
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}
}
```
2. 折半查找法查找某个关键字:
```c
int binary_search(int arr[], int n, int key) {
int left = 0, right = n - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] == key) {
return mid;
} else if (arr[mid] > key) {
right = mid - 1;
} else {
left = mid + 1;
}
}
return -1;
}
```
阅读全文