zoukankan      html  css  js  c++  java
  • 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)+"个");
    
    	}
    
    }
    

  • 相关阅读:
    DelphiXE
    Delphi_检查exe文件是否是"随机基址"
    Delphi_按字节比较两个文件
    HTTP 头部
    NumberFormat usage
    tomcat 配置
    android 与JS之间的交互
    离线安装SDK
    Android SDK更新 Connection to http://dl-ssl.google.com refused
    自定义圆形图片
  • 原文地址:https://www.cnblogs.com/jakeasd/p/5489793.html
Copyright © 2011-2022 走看看