1 /**
2 * 插入排序(升序)
3 *
4 * @param array
5 */
6 public static void insertSort(int[] array) {
7
8 int j = 0;
9
10 // 下标从1开始,因为要和前一个元素比较大小
11 for (int i = 1; i < array.length; i++) {
12
13 // 前一元素大于当前元素
14 if (array[i - 1] > array[i]) {
15
16 // 交换位置
17 array[i - 1] = array[i - 1] ^ array[i];
18 array[i] = array[i - 1] ^ array[i];
19 array[i - 1] = array[i - 1] ^ array[i];
20
21 // 记录下交换后的位置(较小元素的位置)
22 j = i - 1;
23
24 // 判断新位置是否已到起始位置、并前一元素大于当前元素
25 while (j > 0 && array[j - 1] > array[j]) {
26
27 // 交换位置
28 array[j] = array[j] ^ array[j - 1];
29 array[j - 1] = array[j] ^ array[j - 1];
30 array[j] = array[j] ^ array[j - 1];
31
32 // 更新位置
33 j = j - 1;
34 }
35 }
36 }
37 System.out.println(Arrays.toString(array));
38 }