有序序列的二分查找算法

import java.util.Scanner;

public class BinaryFind {

/**

* 作者:zpc

*  功能:对非重复有序元素集合实现二分查找(折半查找)

*/

public static void main(String[] args) {

BinaryFind bf = new BinaryFind();

System.out.println(“请输入测试的数据数量,建议100以内!”);//用户输入要在多少个数中查找

Scanner sn = new Scanner(System.in);

int num = sn.nextInt();

int dataArray[] = new int[num];

System.out.println(“*******请输入” + num + “个非重复有序的元素*******”);

for (int i = 0; i < dataArray.length; i++) {

// 用户从键盘录入数据

System.out.println(“第” + (i + 1) + “个元素:”);

int indexValue = sn.nextInt();

dataArray[i] = indexValue;

}

System.out.println(“请输入要查找的一个元素:”);

int value = sn.nextInt();

bf.find(0, dataArray.length-1, value, dataArray);

}

public void find(int leftIndex, int rightIndex, int value, int[] array) {

// 首先找到中间的数

int midIndex = (leftIndex + rightIndex) / 2;

int minVal = array[midIndex];

if (leftIndex <= rightIndex) {

// 在左边继续找

if (value < minVal) {

find(leftIndex, midIndex – 1, value, array);

}

// 在右边继续找

else if (value > minVal) {

find(midIndex + 1, rightIndex, value, array);

} else {

System.out.println(“找到该值,在数组中的下标为:” + midIndex);

}

}else{

System.out.println(“在序列中没有找着元素 “+value+”。”);

}

}

}

    原文作者:查找算法
    原文地址: https://blog.csdn.net/hellozpc/article/details/8511258
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞