黑马程序员技术交流社区
标题:
快速排序法
[打印本页]
作者:
骑上最爱
时间:
2013-5-22 13:29
标题:
快速排序法
public static void quickSork(int[] arr, int left, int right) {
//定义一个记录数组中间索引的变量
int middle = (left+right)/2;
//定义一个变量用来交换两个值
int jh;
//用于记录数组左边的索引
int l = left;
//用于记录数组右边的索引
int r = right;
do {
//如果下标为l的值小于中间值并且没有超过最大索引值则自增
while (arr[l]<arr[middle] && l<right) {
l++;
}
//如果下标为r的值大于中间值并且没有低于最小索引值则自减
while (arr[r]>arr[middle] && r>left ) {
r--;
}
//如果r这个索引大于或等于l这个索引,说明r索引的值大于l索引
//的值,所以要交换位置,保证排序正常。
if (l <= r) {
jh = arr[r];
arr[r] = arr[l];
arr[l] = jh;
l ++;
r --;
}
} while (l <= r);//如果r这个索引大于或等于l这个索引,说明本次排序结束
//如果r的索引大于起始索引,说明还没有排序完,因为排序方式
//相同则使用递归。
if (left < r) {
quickSork(arr, left, r);
}
//如果l的索引小于结束索引,说明还没有排序完,因为排序方式
//相同则使用递归。
if (right > l) {
quickSork(arr, l, right);
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2