0513作业

 1 package com.hanqi.z1p1;
 2 
 3 import java.util.Random;
 4 import java.util.Scanner;
 5 
 6 public class Homework0513 {
 7 
 8     public static void main(String[] args) {
 9         // TODO 自动生成的方法存根
10         Random r1 = new Random();
11         int[] array = new int[10];
12         for (int i = 0; i < array.length; i++) {
13             
14             array[i] = r1.nextInt(100);   //0-99的随机数
15         }
16         // 遍历输出数组
17         System.out.println("数组的原始顺序");
18         for (int t : array) {
19             System.out.print(t + " ");
20         }
21         
22         //2.冒泡排序
23         System.out.println("排序后的顺序");
24         //总的循环次数
25         for (int k = 0; k < array.length - 1; k++) {
26             //优化:每次冒泡时的循环次数,比上一次少1
27             for (int i = 0; i < array.length - 1-k; i++) {
28                 if (array[i] > array[i + 1]) {
29                     // 从小到大排列
30                     int zhong = array[i];
31                     array[i] = array[i + 1];
32                     array[i + 1] = zhong;
33 
34                 }
35             }
36             System.out.println("数组第" + (k + 1) + "次排序后的顺序");
37             for (int t : array) {
38                 System.out.print(t + " ");
39             }
40         }
41         //3.二分查找
42         
43         //1)计算出数组的中间位置:(开始位置索引+结束位置索引)/2
44         
45         //2)取出中间未知的值和要查找的数字比较,根据比较结果决定下一步查找的部分
46         //3)计算出下一部分数组的中间位置
47         
48         //要查找的值
49         Scanner sc=  new   Scanner(System.in);
50         System.out.println("请输入要查找的数");
51         int a=sc.nextInt();
52         
53         
54         int w=-1;//-1代表没找到
55         //开始索引
56         int  start=0;
57         //结束索引
58         int  end=array.length-1;
59         //循环条件
60         while(start<=end)
61         {
62         int m=(start+end)/2;
63         if(a==array[m])
64         {
65             w=m;//找到了
66             break;
67         }
68         else if(a>array[m])
69         {
70             start=m+1;
71         }
72         else
73         {
74             end=m-1;
75         }
76         }
77         System.out.println("找到的位置是"+w);
78 
79     }
80 
81 }

运行结果:

 

转载于:https://www.cnblogs.com/miss123/p/5489489.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值