1 | //swapping sort including: |
QuickSort iteration version1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41class Demo{
public static void quickSort(int[] arr, int left, int right) {
if (left > right) return;
int pivot = arr[left]; // pivot中存的就是基准数
int i = left; // 设置两个哨兵
int j = right; // 设置两个哨兵
while (i != j) {
// 顺序很重要,要先从右边开始找
while (arr[j] >= pivot && i < j) j--;
// 再找左边的
while (arr[i] <= pivot && i < j) i++;
// 交换两个数在数组中的位置
if (i < j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
// 最终将基准数归位
arr[left] = arr[i];
arr[i] = pivot;
quickSort(arr, left, i - 1);// 继续处理左边的,这里是一个递归的过程
quickSort(arr, i + 1, right);// 继续处理右边的 ,这里是一个递归的过程
}
//*********************************************
public static void main(String[] args){
int[] array = new int[9];
for (int i=0;i<9;i++) {
array[i]=(int)(Math.random()*9+1);
System.out.print(array[i]+" ");
}
System.out.println();
quickSort(array,0,8);
for(int i=0;i<array.length;i++)
System.out.print(array[i]+" ");
}
}