Java工具类中算法的实现

1.Java工具类中算法的实现

在Java的java.util包下有一个类:Arrays,该类提供诸多方法,如打印数组、排序和二分查找等。该工具类的使用操作:

(1)导入java.util下的包中的类——import java.util.Arrays

(2)调用相应的API——Arrays.方法名()

1.1 使用工具类打印数组——toString方法

复制代码
1 import java.util.Arrays;
2 public class study{
3 public static void main(String[] args) {
4     int[] a= {2,3,4,5,9,7,8};
5     System.out.println(Arrays.toString(a));
6     }
7 }
复制代码

1.2 使用工具类排序——sort方法     //Arrays.sort(数组) 默认为从小到大排序

复制代码
1 import java.util.Arrays;
2 public class study{
3 public static void main(String[] args) {
4     int[] a= {2,3,4,5,9,7,8};
5     Arrays.sort(a);
6     System.out.println(Arrays.toString(a));
7     }
8 }
复制代码

1.3 使用工具类进行二分查找——binarySearch(int[] args,int key)方法   //在此之前需要通过sort(int [])方法进行排序;若数组包含多个带指定值的元素,则无法保证找到哪个

复制代码
 1 import java.util.Arrays;
 2 public class study{
 3 public static void main(String[] args) {
 4     int[] a= {2,3,4,5,9,7,8};
 5     //排序
 6     Arrays.sort(a);
 7     //二分查找,返回下标值
 8     int index=Arrays.binarySearch(a, 3);
 9     System.out.println("下标在:"+index+"位置");
10     }
11 }
复制代码

1.4 Random工具类可以生成随机数

Random工具类的nextInt(int num)方法可以生成随机数0~num,但不包含num

复制代码
1 import java.util.Random;
2 public class study{
3 public static void main(String[] args) {
4     //随机生成0~10000,单数不包含10000的整数
5     Random ran=new Random();
6     int a=ran.nextInt(10000);
7     System.out.println("a="+a);
8     }
9 }
复制代码

 


 

 

2.综合实例

模拟随机组合双色球,红色球号码有6个,从1~33号数字中随机抽取,不可重复;蓝色球号码有1个,从1~16号数字中随机抽取,组合得到双色球号码

复制代码
 1 import java.util.Arrays;
 2 import java.util.Random;
 3 public class study{
 4 public static void main(String[] args) {
 5     //存放1~33号数组
 6     String[] pool= {"01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","22","23","24","25","26","27","28","29","30","31","32","33"};
 7     //存放1~33数字是否使用过
 8     boolean[] used=new boolean[pool.length];
 9     ///存放双色球
10     String[] balls=new String[6];
11     Random random=new Random();
12     int i;
13     int index=0;
14     while(true) {
15         //随机生成数组下标
16         i=random.nextInt(pool.length);
17         if(used[i]) {
18             continue; //返回,重新开始循环
19         }
20         balls[index++]=pool[i];
21         used[i]=true; //标志使用过了
22         if(index==balls.length) { //检查是否满了
23             break; //结束循环
24         }
25         }
26     Arrays.sort(balls);
27     //对数组进行扩容
28     String[] newBalls=new String[7];
29     for(int m=0;m<balls.length;m++) {
30         newBalls[m]=balls[m];
31     }
32     newBalls[newBalls.length-1]=pool[random.nextInt(16)];
33     //打印随机生成的双色球
34     System.out.println("双色球:"+Arrays.toString(newBalls));
35     }
36 }
复制代码

 


 

 

3.练习

3.1 使用冒泡排序、插入排序、选择排序对[1,5,6,9,8,2,3]进行从小到大排序

  • 冒泡排序

 

 

  • 插入排序

 

 

 

  • 选择排序

 

 

 

3.2 使用工具类随机生成5位数字,并用工具类对这5位数进行排序

 

 

 3.3 自定义一个方法,当用户输入两个随机数,判断最大值

posted @ 2022-02-25 10:42  救救孩子吧/  阅读(147)  评论(0)    收藏  举报