折半查找
#include <stdio.h>
void main() {
int data[5] = {90, 70, 50, 30, 10}, // 静态初始化数组
size = 5, // 数组长度
idx, // 目标元素的下标
mid, // 中间位置下标
target; // 目标元素
printf("请输入你要查找的数:");
scanf("%d", &target);
mid = (0 + 4) / 2; // 求数组中间位置
while(mid < size) {
if (data[mid] < target) {
mid = (0 + (mid - 1)) / 2; // 左侧中间位置
} else if (data[mid] > target) {
mid = ((mid + 1) + 4) / 2; // 右侧中间位置
} else {
idx = mid;
break;
}
}
printf("目标元素的下标为%d\n", idx);
}
java中list类查找
import java.util.Arrays;
public class App {
public static void main(String[] args) {
//动态赋值
int[] score = new int[5];
score[0] = 75;
score[1] = 80;
score[2] = 56;
score[3] = 65;
score[4] = 61;
//静态赋值
int[] s = new int[]{9,8,4,6,5};
// 调用折半查找方法,必须先为数组排序
//数组排序
Arrays.sort(score);
//打印
for (int i = 0; i < score.length; i++) {
System.out.println(score[i]);
}
// 调用折半查找方法,必须先为数组排序
int idx = Arrays.binarySearch(score, 65);
System.out.println("idx = " + idx);
}
}