0513二分查找练习

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)+"个");

	}

}

posted @ 2016-05-13 16:12  jakermk  阅读(161)  评论(0编辑  收藏  举报