java 随机数生成,冒泡排序,二分查找法综合运用

package com.hanqi;

import java.util.*;
import java.util.Random;

public class Test8 {

    public static void main(String[] args) {
        // TODO 自动生成的方法存根

        //1.随机生成生成数组
                Random r1 = new Random();
                int[] array = new int[10];
                for (int i = 0; i < array.length; i++) {
                    // 产生随机数
                    array[i] = r1.nextInt(100);   //0-99的随机数
                }
                // 遍历输出数组
                System.out.println("数组的原始顺序");
                for (int t : array) {
                    System.out.print(t + " ");
                }
                
                //2.冒泡排序
                System.out.println("排序后的顺序");
                //总的循环次数
                for (int k = 0; k < array.length - 1; k++) {
                    //优化:每次冒泡时的循环次数,比上一次少1
                    for (int i = 0; i < array.length - 1-k; i++) {
                        if (array[i] > array[i + 1]) {
                            // 从小到大
                            int zhong = array[i];
                            array[i] = array[i + 1];
                            array[i + 1] = zhong;

                        }
                    }
                    System.out.println("数组第" + (k + 1) + "次排序后的顺序");
                    for (int t : array) {
                        System.out.print(t + " ");
                    }
                }
                //3.二分查找
                
                //1)计算出数组的中间位置:(开始位置索引+结束位置索引)/2
                
                //2)取出中间未知的值和要查找的数字比较,根据比较结果决定下一步查找的部分
                //3)计算出下一部分数组的中间位置
                
                //要查找的值
                Scanner sc=  new   Scanner(System.in);
                System.out.println("请输入要查找的数");
                int a=sc.nextInt();
                //找到的值得位置
                
                int w=-1;//-1代表没找到
                //开始索引
                int  start=0;
                //结束索引
                int  end=array.length-1;
                //循环条件
                while(start<=end)
                {
                int m=(start+end)/2;
                if(a==array[m])
                {
                    w=m;//找到了
                    break;
                }
                else if(a>array[m])
                {
                    start=m+1;
                }
                else
                {
                    end=m-1;
                }
                }
                System.out.println("找到的位置是"+w);
    }

}

原文地址:https://www.cnblogs.com/jskbk/p/5489428.html