0913作业

 1 import java.util.Random;
 2 
 3 public class Text1
 4 {
 5     public static void main(String[] args)
 6     {
 7         int[] num=new int[8];        //方法调用区-----定义8个随机数存放的数组
 8         num=getNumbers(num,1,32);    //调用方法获取随机数并保存
 9         show(num);            //测试打印方法一
10         show2(num);            //测试打印方法二
11         mySort(num);            //冒泡排序
12         show(num);            //打印结果
13         search2(num,22);        //二分查找法查找数值22,可使用Scanner输入数值
14     }
15     //方法实现区-----获得不重复的随机数,范围是m-n;注意输入数值时不要让接收数组超过随机数的数量,代码加个if,else即可解决
16     public static int[] getNumbers(int[] num,int m,int n)
17     {
18         Random random=new Random();
19         int r;
20         for(int i=0;i<num.length;i++)
21         {
22             r=random.nextInt(n)+m;
23             num[i]=r;
24             for(int j=0;j<i;j++)
25             {
26                 if(num[j]==num[i])
27                 {
28                     i--;
29                     break;
30                 }
31             }
32         }                        
33         return num;
34     }
35     //遍历数组并打印出来,方法一
36     public static void show(int[] num)
37     {
38         for(int i=0;i<num.length;i++)
39         {
40             System.out.print(num[i]+" ");
41         }
42         System.out.println();
43     }
44     //遍历数组并打印出来,方法二
45     public static void show2(int[] num)
46     {
47         for(int loop:num)
48         {
49             System.out.print(loop+"  ");
50         }
51         System.out.println();
52     }
53     //冒泡排序
54     public static void mySort(int[] num)
55     {    
56         int change;
57         for(int i=0;i<num.length-1;i++)
58         {
59             for(int j=num.length-1;j>i;j--)
60             {
61                 if(num[j-1]>num[j])
62                 {
63                     change=num[j];
64                     num[j]=num[j-1];
65                     num[j-1]=change;
66                 }
67             }
68         }
69     }
70     //二分查找法,百度搜索资料
71     public static void search2(int[] num,int n)
72     {
73         int start=0;
74         int end=num.length-1;
75         int state=1;
76         while(start<=end)
77         {    
78             int middle=(start+end)/2;
79             if(n>num[middle])
80             {
81                 start=middle+1;            
82             }else if(n<num[middle])
83             {
84                 end=middle-1;
85             }else if(n==num[middle])
86             {
87                 state=0;    
88                 System.out.println("该数值位于数组num["+middle+"]中");
89                 break;
90             }
91         }
92         if(state==1)
93         {
94             System.out.println("该数值查询不到!");
95         }
96     }
97 }

 

 

posted @ 2016-09-14 01:04  火山林风  阅读(180)  评论(0编辑  收藏  举报