摘要: 常用算法之一的快速排序算法的java實現
原理:選擇一個基準元素,通常選擇第一個元素或者最后一個元素,通過一趟掃描, 將待排序列分成兩部分,一部分比基準元素小,一部分大于等于基準元素, 此時基準元素在其排好序后的正確位置,然后再用同樣的方法遞歸地排序劃分的兩部分。
1
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
|
/** * * @author 阿信sxq-2015年7月16日 * * @param args */ public static void main(String[] args) { int a[] = { 49 , 38 , 65 , 97 , 76 , 13 , 27 , 49 , 78 , 34 , 12 , 64 , 5 , 4 , 62 , 99 , 98 , 54 , 56 , 17 , 18 , 23 , 34 , 15 , 35 , 25 , 53 , 51 }; if (a.length > 0 ) { //查看數組是否為空 _quickSort(a, 0 , a.length - 1 ); } System.out.println(Arrays.toString(a)); } public static void _quickSort( int [] arr, int left, int right) { if (left >= right) { return ; } int low = left; int high = right; int tmp = arr[low]; //數組的第一個作為中軸 while (low < high) { while (low < high && arr[high] >= tmp) { high--; } arr[low] = arr[high]; //比中軸小的記錄移到低端 while (low < high && arr[low] <= tmp) { low++; } arr[high] = arr[low]; //比中軸大的記錄移到高端 } arr[low] = tmp; //中軸記錄到尾 _quickSort(arr, left, low - 1 ); //對低字表進行遞歸排序 _quickSort(arr, low + 1 , right); //對高字表進行遞歸排序 } |
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
原文鏈接:https://my.oschina.net/songxinqiang/blog/672635