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 }