您的位置:首页 > 编程语言 > Java开发

快速排序的Java实现

2010-07-23 13:37 453 查看
/**
* 快速排序算法
* @param arr 待排序数组
* @param startIndex 起始下标
* @param endIndex 结束下标
* @return 排序好的数组
*/
public static int[] quickSort(int[] arr, int start, int end)
{
int left = start;
int right = end;
int compIndex = start;
int temp = 0;

// 一趟快速排序
while (start < end)
{
// 从后往前找到第一个比基准值小的元素
while (start < end)
{
if (arr[end] < arr[compIndex])
{
temp = arr[end];
arr[end] = arr[compIndex];
arr[compIndex] = temp;
compIndex = end;
break;
}
end--;
}

// 从前往后找到第一个比基准值大的元素
while (start < end)
{
if (arr[compIndex] < arr[start])
{
temp = arr[start];
arr[start] = arr[compIndex];
arr[compIndex] = temp;
compIndex = start;
break;
}
start++;
}
}
// 如果排序起始值和基准值之间还有一个元素,对基准值左边的元素集合继续进行快速排序
if (left + 1 < compIndex)
{
arr = quickSort(arr, left, compIndex - 1);
}
// 如果基准值和排序结束值之间还有一个元素,对基准值右边的元素集合继续进行快速排序
if (compIndex < right - 1)
{
arr = quickSort(arr, compIndex + 1, right);
}
return arr;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: