码迷,mamicode.com
首页 > 其他好文 > 详细

0513二分查找练习

时间:2016-05-13 17:00:21      阅读:98      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!