您的位置:首页 > 其它

快速排序法

2012-07-11 00:00 411 查看
package com.chapter05;

public class SortArray_05 {
public static void main(String[] args) {
int[] intArray = { 12, 11, 45, 6, 8, 43, 40, 57, 3, 20, 15 };
System.out.println("排序前的数组:");
for (int i = 0; i < intArray.length; i++) {
System.out.print(" " + intArray[i]);
// 输出数组元素
if ((i + 1) % 5 == 0) {
// 每5个一行
System.out.println();
}
}
System.out.println();
int[] b = quickSort(intArray, 0, intArray.length - 1);
// 调用quickSort方法
System.out.println("使用快速排序法后的数组:");
for (int i = 0; i < b.length; i++) {
System.out.print(" " + b[i]);
// 输出数组元素
if ((i + 1) % 5 == 0) {
// 每5个一行
System.out.println();
}
}
}

public static int getMiddle(int[] array, int left, int right) {
int temp;
// 进行一次快速排序,返回中心的点位置
int mid = array[left];
// 把中心置于a[0]
while (left < right) {
while (left < right && array[right] >= mid) {
right--;
}
temp = array[right];
// 将比中心点小的数据移动到左边
array[right] = array[left];
array[left] = temp;
while (left < right && array[left] <= mid) {
left++;
temp = array[right];
// 将比中心点大的数据移动到右边
array[right] = array[left];
array[left] = temp;
}
}
array[left] = mid; // 中心移到正确位置
return left;
// 返回中心点
}
public static int[] quickSort(int[] array,int left,int right){
//快速排序法
if(left < right - 1){
//如果开始点和结束点没有重叠的时候,也就是指针没有执行到结尾
int mid = getMiddle(array,left,right);
//重新获取中间点
quickSort(array,left,mid - 1);
quickSort(array,mid + 1,right);
}
return array;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  快速排序法