1. 程式人生 > >常見排序算法,待補充樹

常見排序算法,待補充樹

generated rt+ rate practice amp emp 直接 list 字符

1,快速排序 非常高效但不穩定的排序算法,平均復雜度onlog(n),最壞o(n2) public class Test1Practice { public static void quickSort(int[] arr,int low,int high){ int start = low; int end = high; int key = arr[low]; while(start < end){ while(start < end && arr[end] >= key) end--; if(arr[end]<= key){ int temp = arr[end]; arr[end] = arr[start]; arr[start] = temp; } while(start < end && arr[start] <= key) start++; if(arr[start] >= key){ int temp = arr[start]; arr[start] = arr[end]; arr[end] = temp; } } if(start>low) quickSort(arr,low,start-1);//左邊序列。第一個索引位置到關鍵值索引-1 if(end<high) quickSort(arr,end+1,high); } public static void main(String[] args) { // TODO Auto-generated method stub int[] arr = new int[]{1,32,23,45,21,3,6,49,65,67,8,17}; int low = 0; int high = arr.length ; quickSort(arr,low,high-1); for(int a : arr){ if(a != arr[arr.length -1]) System.out.print(a + ","); else System.out.print(a); } } } 2,冒泡排序算法 穩定算法,平均o(n2),最壞o(n2) public static void bubbleSort(int[] arr){ for(int i=0; i< arr.length-1;i++){ for(int j=0; j < arr.length-1-j;j++){ if(arr[j] > arr[j+1]){ int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } } } public static void main(String[] args) { // TODO Auto-generated method stub int[] arr = new int[]{56,32,23,45,21,3,6,49,65,67,8,17}; bubbleSort(arr); for(int a : arr){ if(a != arr[arr.length -1]) System.out.print(a + ","); else System.out.print(a); } //數組轉為List } 3,選擇排序算法 //對於給定的一組記錄,經過第一輪比較後得到最小的記錄,然後將該記錄的位置與第一個記錄的位置交換;接著對不包括第一個記錄以外的其他記錄進行第二次比較,得到最小記錄並與第二個位置記錄交換; 不穩定算法,平均o(n2),最壞o(n2) public static void selectSort(int[] arr){ for(int i =0; i< arr.length-1;i++){ int index=i; for(int j=i+1;j<arr.length;j++){ if(arr[j]<arr[index]) index=j; } if(index != i){ int temp = arr[i]; arr[i] = arr[index]; arr[index] = temp; } } } 4,直接插入排序 穩定算法,平均o(n2),最壞o(n2) 列表,集合的常見操作 1,數組,字符串的數組轉為list String[] stringArray = {"hello","world","B"}; 不能把基本類型的數組轉為列表
[] intArray = {, , , }; List<Integer> list = Ints.asList(intArray); ,是定長的,list.set(0, 100);

常見排序算法,待補充樹