1. 程式人生 > >演算法是什麼(一)陣列的演算法記錄

演算法是什麼(一)陣列的演算法記錄

演算法是什麼(一)陣列的演算法記錄

 

liuyuhang原創,未經允許禁止轉載

 

 

從入門一個一個來吧,先說陣列的演算法:

 

1、求極值

 

        int[] arr01 = { 1, 3, 5, 76, 23, 44, 15, 33, 9, -2, -9 };
        int[] arr02 = { 2, 3, 7, 42, 23, 14, 55, 13, 0, -1, -7 };

        int length = 11;
        int temp = arr01[0];
        
// 求最大值 for (int i = 1; i < length; i++) { if (arr01[i] > temp) { temp = arr01[i]; } } System.out.println("the max in arr01 is : " + temp); // 求最小值 for (int i = 1; i < length; i++) { if (arr01[i] < temp) { temp
= arr01[i]; } } System.out.println("the min in arr01 is : " + temp);

 

 

2、排序

 

public static void main(String[] args) {
        int[] arr01 = { 1, 3, 5, 76, 23, 44, 15, 33, 9, -2, -9 };
        int[] arr02 = { 2, 3, 7, 42, 23, 14, 55, 13, 0, -1, -7 };
        
int[] arr03 = { 1, 4, 9, 12, 33, 24, 25, 73, -4, -9, -17 }; int[] arr04 = { 0, 2, 11, 41, 63, 19, 51, -3, -2, 0, 3 }; int length = 11; System.out.println("jdk自帶的快速排序法"); Arrays.sort(arr01); printArr(arr01); System.out.println("氣泡排序法 雙層遍歷,裡層比外層移一位"); for (int i = 0; i < length - 1; i++) { for (int j = i + 1; j < length; j++) { if (arr02[i] > arr02[j]) {// 若前一個元素比後一個元素大,則交換位置 int temp = arr02[i]; arr02[i] = arr02[j]; arr02[j] = temp; } } } printArr(arr02); System.out.println("選擇排序法,逐次[選擇]出當前index後的最小元素,然後安排到當前index位置"); for (int i = 0; i < length - 1; i++) { int min = i;// 記錄當前index for (int j = i + 1; j < length; j++) { if (arr03[min] > arr03[j]) {// 與當前對比,若有個更小的元素,則更換index為更小的index,迴圈後找到最小的元素的index min = j; } } if (min != i) {// 若最小元素的index與當前index不等,則交換當前元素與最小元素的index int temp = arr03[i]; arr03[i] = arr03[min]; arr03[min] = temp; } } printArr(arr03); } // 遍歷 public static void printArr(int[] arr) { for (int i : arr) { System.out.print(i + " "); } System.out.println(); }

 

困,明天繼續寫!

 

3、求交集

 

4、求並集

 

5、求補集

 

6、去重複

 

7、求和

 

8、求平均

 

9、