折半查找算法示例

本文介绍了一种基于Java的折半搜索算法实现方法。该算法首先对输入的整数数组进行排序,然后通过循环比较中间元素来查找指定数值的位置。文章提供了完整的代码示例并解释了其工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一直有想整理以前学习JAVA的时候的一些所得,拖了很久,虽然晚了点,不过还是迟做总比不做好吧,:-)

 

折半算法,先对数组进行递增排序,然后循环和中间的值比较。

下面是示例的代码(貌似见到有人发的代码能展和的,不晓得是用什么做到的):

 

package com.cqit.edu.test;
import java.util.Scanner;

/**
 * @author 
 * @date 2008-12-8
 *
 */
public class MiddleSearch {

 /**
  * @param args
  */

 public static int search() {

  System.out.println("请随意输入10个数字,并以空格隔开:");
  Scanner scanner = new Scanner(System.in);
  int low = 0;
  int mid;
  int names[] = new int[10];
  // String str1 = scanner.next();
  for (int i = 0; i < names.length; i++) {

   names[i] = scanner.nextInt();
  }

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

    if (names[i] > names[j]) {

     int temp;
     temp = names[i];
     names[i] = names[j];
     names[j] = temp;
    }
   }
  System.out.println("经过排序后变成:");
  for (int i = 0; i < names.length; i++) {
   System.out.print(names[i] + " ");
  }
  System.out.println();
  System.out.println("请输入你要查找的数字:");
  int str2 = scanner.nextInt();
  
  int high = names.length;

  while (low <= high) {

   mid = (low + high) / 2;
   if (str2 == names[mid]) {
    System.out.println("你查找的是第:"+(mid+1)+"个数字!");
    return mid; // 没有return mid 的话将死循环,一直输出mid

   } else if (str2 < names[mid]) {

    high = mid - 1;
   } else {
    low = mid + 1;
   }

  }
  return 0;
 }

 public static void main(String[] args) {

  search();

 }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值