BouncyCastle配置及SM2加解密demo編寫
阿新 • • 發佈:2021-01-20
氣泡排序
圖解
第一個陣列下標元素與第二個陣列元素比較大於則交換 第二個陣列元素與第三個資料元素比較大於則交換.....
假如:
陣列長度為5 我們需要比較4次 將最大的數值放在數值的最後一個元素上 也就是 n-1
下一次冒泡的時候 因為最後的已經是最大的,前面4個元素相當於形成一個新的陣列
進行重複冒泡
Java code
import java.util.Arrays; //氣泡排序 public class BubbleSort { //測試 public static void main(String[] args) { //生成陣列 int[] array = DataChecker.generaRandomArray(20,20); System.out.println(Arrays.toString(array)); //氣泡排序 sort(array); System.out.println(Arrays.toString(array)); } /** * * @param arr int[] * 對陣列進行氣泡排序 */ public static void sort(int[] arr){ for (int i = arr.length-1; i > 0 ; i--) { for (int j = 0; j < i; j++) { if (arr[j] > arr[j+1] ){ swap(arr,j,j+1); } } } } /** * @param arr int[] * @param i 需要交換的陣列下標 * @param j 同上 */ public static void swap(int[] arr,int i,int j){ //交換 int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } }
對數器DataChecker
import java.util.Arrays; import java.util.Random; //對數器 public class DataChecker { /** * @param size 陣列大小 * @return 隨機陣列 */ public static int[] generaRandomArray(int size){ return generaRandomArray(size,size); } /** * * @param size size 陣列的大小 * @param randomSize 隨機數值的大小 * @return int[] */ public static int[] generaRandomArray(int size,int randomSize){ Random random = new Random(); int[] arr = new int[size]; for (int i = 0; i < arr.length; i++) { arr[i] = random.nextInt(randomSize); } return arr; } /** * * @param arr1 int[] * @param arr2 int[] * @return 比較兩個陣列的值是否相同 */ public static boolean check(int[] arr1,int[] arr2){ Arrays.sort(arr1); //選擇排序 //SelectedSort.sort(arr2); //氣泡排序 ,這裡可以使用策略模式 就不用每次都改動原始碼了 BubbleSort.sort(arr2); System.out.println(Arrays.toString(arr1)); System.out.println(Arrays.toString(arr2)); for (int i = 0; i < arr1.length; i++) { if (arr1[i] != arr2[i]){ return false; } } return true; } //測試 public static void main(String[] args) { //儲存正確的次數 int right = 0; for (int i = 0; i < 10000; i++) { System.out.println("第"+i+"次隨機生成進行比較 "); int[] arr1 = DataChecker.generaRandomArray(100); int[] arr2 = Arrays.copyOf(arr1,arr1.length); if (check(arr1,arr2)) right++; } System.out.println("right: " + right); } }