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 自定义一个方法,当用户输入两个随机数,判断最大值



浙公网安备 33010602011771号