1 package com.taotao.api;
2
3 import org.junit.Test;
4
5 import java.util.Arrays;
6 import java.util.List;
7
8 public class SortTest2 {
9
10
11 @Test
12 public void sortInsert() {
13
14 int[] array = new int[5];
15
16 array[0] = 2;
17 array[1] = 1;
18 array[2] = 4;
19 array[3] = 5;
20 array[4] = 1;
21
22 for (int i = 0; i < array.length; i++) {
23 //查找合适位置
24 int point = i;
25 for (int j = 0; j < i; j++) {
26 if (array[i] < array[j]) {
27 point = j;
28 break;
29 }
30 }
31 if (i == point) continue;
32
33 int temp = array[i];
34 //序列后移
35 for (int j = i; j > point; j--) {
36 array[j] = array[j - 1];
37 }
38 //赋值合适位置
39 array[point] = temp;
40 }
41
42 for (int i : array) {
43 System.out.print(i);
44 }
45
46 }
47
48 @Test
49 public void sortQuick() {
50 List<Integer> arrayList = Arrays.asList(15,17,2,4,3);
51 int[] list = arrayList.stream().mapToInt(x -> x).toArray();
52 quick(list, 0, list.length - 1);
53 }
54
55 private void quick(int[] list, int left, int right) {
56
57 int head = left;
58 int tail = right;
59
60 //以temp 作为对比值
61 Integer temp = list[head];
62 while (head < tail) {
63 //从后往前 找最近一个小于 对比值
64 //并将 此值 扔到 head位置
65 while (head < tail && list[tail] >= temp) tail--;
66 if (head != tail) {
67 list[head] = list[tail];
68 }
69 //从前往后 找大于对比值的
70 //扔到 tail 位置
71 while (head < tail && list[head] <= temp) head++;
72 if (head != tail) {
73 list[tail] = list[head];
74 }
75 }
76 //将对比值 扔到 合适位置
77 if (head == tail) list[head] = temp;
78
79 //Stream.of(list).forEach(x-> System.out.println(x+","));
80 for (int i : list) {
81 System.out.print(i);
82 System.out.print(",");
83 }
84 System.out.println("");
85
86 if (left > right) return;
87
88 //递归 左块
89 if (left < head) {
90 quick(list, left, head);
91 }
92 //递归右块
93 if (head + 1 < right) {
94 quick(list, head + 1, right);
95 }
96
97 }
98
99 /***
100 * 交换排序
101 */
102 @Test
103 public void sortNormal() {
104
105 List<Integer> arrayList = Arrays.asList(25, 10, 22, 30, 45, 53, 12, 43);
106 int[] list = arrayList.stream().mapToInt(x -> x).toArray();
107
108
109 for (int i = 0; i < list.length; i++) {
110 for (int j = 0; j < i; j++) {
111 if (list[i] <= list[j]) {
112 int temp = list[i];
113 list[i] = list[j];
114 list[j] = temp;
115 }
116 }
117 }
118
119 for (int i : list) {
120 System.out.print(i);
121 System.out.print(",");
122 }
123 System.out.println("");
124 }
125
126
127
128 }