标签:ar sp java bs 代码 ef amp as 算法
Lua快速排序示例代码:
Java快速排序示例代码:
private void sort(int [] arr ,int left ,int right) {
if(left >= right) return ;
int i = left ,j = right ;
int datum = arr[i] ;
while(i < j) {
/* 从右向左,找到一个小于基准值的元素索引 */
while(i < j && arr[j] >= datum) {
j -- ;
}
/* 从左向右,找到一个大于基准值的元素索引 */
while(i < j && arr[i] < datum) {
i ++ ;
}
/*
* 此时i停留在左起第一个大于基准值的元素索引上,j停留在右起第一个小于基准值的元素索引上
* 将i/j元素交换,即:大于基准值的元素放右边,小于的放左边
*/
int t = arr[i] ;
arr[i] = arr[j] ;
arr[j] = t ;
}
/* 一轮排序后,i == j */
/* 左递归,因为i有可能等于0,所以左边递归不能用i - 1 */
sort(arr, left, i);
/* 右递归,i == j所以,j要从j + 1开始 */
sort(arr, j + 1 ,right);
}标签:ar sp java bs 代码 ef amp as 算法
原文地址:http://my.oschina.net/zhanglikun/blog/348872