摘要: 常用算法之一的快速排序算法的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