1 /** 2 * @Description 快速排序法,时间复杂度O{nlgn} 3 * @date 2017年2月21日 下午6:34:49 4 */ 5 @Test 6 public void kuaisu() { 7 int[] arr = getData(); 8 quicksort(0, arr.length - 1, arr); 9 System.out.println(Arrays.toString(arr)); 10 } 11 12 public static void quicksort(int left, int right, int[] arr) { 13 if (left > right) return; 14 int i, j, temp, n; 15 temp = arr[left]; 16 i = left; 17 j = right; 18 while (i != j) { 19 while (arr[j] >= temp && i < j) 20 j--; 21 while (arr[i] <= temp && i < j) 22 i++; 23 if (i < j) { 24 n = arr[j]; 25 arr[j] = arr[i]; 26 arr[i] = n; 27 } 28 } 29 arr[left] = arr[i]; 30 arr[i] = temp; 31 quicksort(left,i-1,arr); 32 quicksort(j+1,right,arr); 33 }
1 /** 2 * @Description 桶排序,时间复杂度O{n} 3 * @date 2017年2月21日 上午9:58:34 4 * @action 将5个10以内的整数,从大到小排序 5 */ 6 @Test 7 public void tong() { 8 @SuppressWarnings("resource") 9 Scanner sc = new Scanner(System.in); 10 System.out.println("被排序的最大数值:"); 11 int numberMax = sc.nextInt(); // 被排序的最大数值 12 System.out.println("被排序的数目:"); 13 int number = sc.nextInt(); // 被排序的数目 14 int[] arr = new int[numberMax]; 15 for (int i = 0; i < number; i++) { 16 arr[sc.nextInt()] += 1; 17 } 18 19 for (int i = 0; i < numberMax; i++) { 20 for (int j = 0; j < arr[i]; j++) { 21 System.out.println(i); 22 } 23 } 24 } 25 26 /** 27 * @Description 冒泡排序-单纯数字大小排序,时间复杂度O{n的平方} 28 * @date 2017年2月21日 下午12:53:13 29 * @action maopao 30 */ 31 @Test 32 public void maopao() { 33 @SuppressWarnings("resource") 34 Scanner sc = new Scanner(System.in); 35 System.out.println("被排序的数目:"); 36 int number = sc.nextInt(); // 被排序的数目 37 int[] arr = new int[number]; 38 for (int i = 0; i < number; i++) { 39 arr[i] = sc.nextInt(); 40 } 41 int temp = 0; 42 for (int i = 0; i < number - 1; i++) { 43 for (int j = i; j < number - 1; j++) {// 或者 for (int j = i+1; j < number-1; j++) { 44 if (arr[j] > arr[j + 1]) { 45 temp = arr[j]; 46 arr[j] = arr[j + 1]; 47 arr[j + 1] = temp; 48 } 49 } 50 } 51 System.out.println(Arrays.toString(arr)); 52 }