首页 > 其他 > 详细

0513二分查找练习

时间:2016-05-13 16:58:40      阅读:196      评论:0      收藏:0      [点我收藏+]
package com.text_1;

import java.util.Random;
import java.util.Scanner;

public class mppx {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		// 数组的二分查找法
		// 前提:数组要排好序
		// 1、随机生成数组
		Random r = new Random();

		int[] array = new int[9];

		for (int i = 0; i < array.length; i++) {
			// 产生随机数
			array[i] = r.nextInt(100);

		}

		// 遍历输出数组
		System.out.println("从100个数字中随机9个数");
		for (int t : array) {
			System.out.print(t + "   ");
		}

		// 进行冒泡排序
		for (int i = 0; i < array.length; i++) {
			for (int j = 0; j < array.length - 1; j++) {
				if (array[j] > array[j + 1]) {

					int t = array[j];
					array[j] = array[j + 1];
					array[j + 1] = t;
				}
			}
		}
		System.out.println();
		System.out.println("排序后的数据");
		for (int a : array) {
			System.out.print(a + "   ");
		}
		System.out.println();
		// 二分法找数字
		// 1、输入需要寻找的数字
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入需要查找的数字:");
		int a = sc.nextInt();

		int b = -1;// 没找到输出-1
		// 2、定义下标
		int start = 0;// 开始索引

		int end = array.length - 1;// 结束索引

		
		while (start <= end) 
		{
			int mid = (start + end) / 2;
			if (a == array[mid]) 
			{
				b = mid;
				break;// 找到数字跳出
			} 
			else if (a > array[mid])
			{
				start = mid + 1;
			}
			else 
			{
				end = mid - 1;
			}
			
		}
		System.out.println("找到数字的位置是第" +(b+1)+"个");

	}

}

技术分享

0513二分查找练习

原文:http://www.cnblogs.com/jakeasd/p/5489793.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!