1. 程式人生 > 其它 >Java工具類中演算法的實現

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 自定義一個方法,當用戶輸入兩個隨機數,判斷最大值