Java工具類中演算法的實現
阿新 • • 發佈:2022-02-25
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 自定義一個方法,當用戶輸入兩個隨機數,判斷最大值