int BinarySearch(int array[], int key, int min, int max)采用二分查找实现key的查找
时间: 2023-12-14 20:03:33 浏览: 26
这是一个实现二分查找的函数,其参数包括一个已排序的数组array、要查找的值key、查找范围的最小下标min和最大下标max。该函数会在数组中查找key,并返回其下标,如果未找到则返回-1。
具体实现过程如下:
1. 将查找范围的最小下标min和最大下标max计算出中间值mid。
2. 如果mid对应的值等于key,则返回mid。
3. 如果mid对应的值大于key,则在左半部分继续查找,即将max更新为mid-1,重新计算mid并跳到步骤1。
4. 如果mid对应的值小于key,则在右半部分继续查找,即将min更新为mid+1,重新计算mid并跳到步骤1。
5. 如果min大于max,则说明key不存在于数组中,返回-1。
示例代码如下:
```
int BinarySearch(int array[], int key, int min, int max) {
while (min <= max) {
int mid = (min + max) / 2;
if (array[mid] == key) {
return mid;
} else if (array[mid] > key) {
max = mid - 1;
} else {
min = mid + 1;
}
}
return -1;
}
```
相关问题
JAVA怎么将INT完整输出为BINARYARRAY
在 Java 中,可以使用 `Integer.toBinaryString(int)` 方法将一个 int 类型的变量转换为二进制字符串表示形式,然后再将该字符串转换为一个二进制数组。
下面是一个示例代码:
```java
int num = 10; // 要转换的 int 类型变量
String binaryStr = Integer.toBinaryString(num); // 转换为二进制字符串
int[] binaryArray = new int[binaryStr.length()]; // 创建一个二进制数组
for (int i = 0; i < binaryStr.length(); i++) {
binaryArray[i] = binaryStr.charAt(i) - '0'; // 将二进制字符串转换为二进制数组
}
System.out.println(Arrays.toString(binaryArray)); // 输出二进制数组
```
运行结果为:`[1, 0, 1, 0]`,表示 10 的二进制数为 1010。
JAVA怎么将INT完整输出为BINARYARRAY并保留高位的0
如果要保留高位的0,需要指定二进制字符串的长度,可以使用 Java 中的 `String.format()` 方法来实现。
示例代码如下:
```java
int num = 10; // 要转换的 int 类型变量
String binaryStr = String.format("%32s", Integer.toBinaryString(num)).replace(' ', '0'); // 转换为32位的二进制字符串
int[] binaryArray = new int[binaryStr.length()]; // 创建一个二进制数组
for (int i = 0; i < binaryStr.length(); i++) {
binaryArray[i] = binaryStr.charAt(i) - '0'; // 将二进制字符串转换为二进制数组
}
System.out.println(Arrays.toString(binaryArray)); // 输出二进制数组
```
在上面的代码中,我们使用了 `%32s` 格式化字符串,表示输出的字符串总长度为32,不足的地方用空格填充。然后使用 `replace()` 方法将空格替换成0,最后将二进制字符串转换为二进制数组,并输出。
运行结果为:`[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0]`,可以看到,输出的二进制数组中包含了高位的0。