• 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 }
  • 相关阅读:
    类欧几里得入土总结 2
    【题解】AGC012C Tautonym Puzzle(人类智慧)
    51nod 1847 奇怪的数学题(min25)
    【题解】51nod1575 LCM and GCD (min25筛)
    【题解】P5163 WD与地图 (这题极好)
    Astronomia.cpp
    LOJ6609 无意识的石子堆 加强版 (容斥)
    【题解】AT2273 Addition and Subtraction Hard(DP)
    【题解】Another Coin Weighing Puzzle (构造)
    【题解】P3747 [六省联考2017]期末考试 (单位根反演)
  • 原文地址:https://www.cnblogs.com/kaililikai/p/5870364.html
Copyright © 2020-2023  润新知