1.最簡單的冒泡排序shell
/** * 冒泡排序 */ public static void bubbleSort(){ int[] arr = {5,8,1,2,9,8,7,4}; System.out.println("排序前的數組爲:" ); for (int num : arr){ System.out.println(num + " "); } for (int i =0; i<arr.length;i++){ for(int j =0 ; j<arr.length-1-i; j++){ if(arr[j] > arr[j+1]){ int tem = arr[j]; arr[j] = arr[j+1]; arr[j+1] = tem; } } } System.out.println(); System.out.println("排序後的數組爲:"); for (int num : arr){ System.out.println(num + " "); } }
2.插入排序數組
/** * 插入排序 * 思想:假設前面的幾個是按照順序排好的, * 以後的每個元素會與以前有順序的數組中值比較直到找到那個小於 * 他的就會交換位置,以此類推 * @param arr * @return */ public static int[] inserSort(int[] arr){ int temp = 0; for (int i = 0; i<arr.length; i++){ int j = i-1; temp = arr[i]; for (;j >=0 && temp<arr[j];j--){ arr[j+1] = arr[j];//將大與於temp的值日後移一個單位 } arr[j+1] = temp; } return arr; }
3.希爾排序排序
/** * 希爾排序 * 將數組分紅d分紅若干份,其他的就是按照插入排序來完成的,直到d=1就表示數組已經排好序了 * @param arr * @return */ public static int[] shellSort(int[] arr){ double d1 = arr.length; int temp = 0; while (true){ d1 = Math.ceil(d1/2); int d = (int) d1; for (int x = 0;x<d;x++){ for (int i = x+d;i<arr.length;i+=d){ int j = i-d; temp = arr[i]; for (;j>=0 && temp<arr[j]; j-=d){ arr[j+d] = arr[j]; } arr[j+d] = temp; } } if (d==1){ break; } } return arr; }
4.選擇排序it
/** * 選擇排序 * 從數組中找到最小的而後和第一個交換位置,而後再剩下的裏找最小的和第二個交換位置, * 循環直到倒數第二個數和最後一個數比較 * @param arr * @return */ public static int[] selectSort(int[] arr){ int position = 0; for (int i=0;i<arr.length;i++){ position = i; int temp = arr[i]; for (int j=i+1;j<arr.length;j++){ if(arr[j]<temp){ temp = arr[j]; position = j; } } arr[position] = arr[i]; arr[i] = temp; } return arr; }
5.快速排序,稍後會寫上io