标签:
1 Random r=new Random();//定义一个新的随机数 2 int[] array=new int[10];//定义一个新的数组,规定数组的长度 3 4 for(int i=0;i<array.length;i++)//数组运行的范围 5 { 6 //产生随机数 7 array[i]=r.nextInt(100);//将产生的随机数放到数组中 8 } 9 //遍历输出数组 10 System.out.println("数组的原始顺序:");// 11 for(int i:array)//遍历:for(集合的数据类型:变量名) 12 { 13 System.out.print(i+" "); 14 } 15 System.out.println(); 16 //2、冒泡排序 17 //格式化代码:Ctrl+shift+f 18 System.out.println("排序后的顺序"); 19 //总的循环次数少一 20 //数组按照索引一步一步的走,每走一步,就拿这个索引上的值和前面的数作比较,遇到比他小的数就交换到在前面 21 for(int k=0;k<array.length-1;k++) 22 { 23 //优化代码:每次冒泡是的循环次数比上一次少1 24 for (int i = 0; i < array.length - 1-k; i++) 25 { 26 // 从小到大排序 27 if (array[i] > array[i+1]) 28 { 29 // 调换 30 int t = array[i];//强t值赋给array[i] 31 array[i] = array[i+1];//array[i]再将里面的值给array[i+1] 32 array[i+1] = t; 33 } 34 } 35 //System.out.println("数组第"+(k+1)+"次排序的顺序:"); 36 for (int i : array) 37 { 38 System.out.print(i + " "); 39 } 40 System.out.println(); 41 } 42 //3、二分查找 43 //1)计算出数组的中间位置:(开始位置索引+结束位置索引)/2 44 //2)取出中间位置的值和要查找的数字比较,根据比较结果决定下一步要查找的部分 45 //3)计算出下一部分数组的中间位置:(开始位置索引+结束位置索引)/2 46 //要查找的值 47 int chazhao=10; 48 //找到的位置 49 int zhaodaodeweizhi=-1;//-1代表没找到 50 //开始索引 51 int start=0; 52 //结束索引 53 int end=array.length-1; 54 // 55 while(start<=end) 56 { 57 int zhongjian = (start + end) / 2;//中间索引=(开始索引+结束索引)/2 58 //若查找的数正好等于中间数 59 if (chazhao == array[zhongjian]) 60 { 61 //则所找到的数=中间数 62 zhaodaodeweizhi = zhongjian;// 找到了 63 break;//找到后直接跳出循环 64 } 65 //所查找的数的索引>中间数,则说明所查找的数在中间偏后的位置 66 else if (chazhao > array[zhongjian]) 67 { 68 //则所输出的开始数=中间数+1 69 start = zhongjian + 1; 70 } 71 else //反之,所查找的数的索引<中间数,则说明所查找的数在中间靠前的位置 72 { 73 //所输出结尾数=中间数-1 74 end = zhongjian - 1; 75 } 76 } 77 System.out.println("找到的位置为:"+zhaodaodeweizhi);
二次输出:
标签:
原文地址:http://www.cnblogs.com/yg6405816/p/5491411.html