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