package com.test;
/**
* @ClassName: QuickSort.java
* @Description: 快速排序算法
* @author Bert
* 2014-4-3 下午4:21:21
*/
public class QuickSort {
/**
* 排序算法
* @param num 数据组
* @throws Exception
*/
public static void sort(Integer[] num) {
if (num != null && num.length > 0) {
_quickSort(num, 0, num.length - 1);
} else {
System.out.println("数组为空!");
}
}
public static int getMiddle(Integer[] list, int low, int high) {
int tmp = list[low]; // 数组的第一个作为中轴
while (low < high) { // 仅当区间长度大于1时才须排序
while (low < high && list[high] >= tmp) {
high --;
}
list[low] = list[high]; //比中轴小的记录移到低端
while (low < high && list[low] <= tmp) {
low++;
}
list[high] = list[low]; //比中轴大的记录移到高端
}
list[low] = tmp; //中轴记录到尾
return low; //返回中轴的位置
}
public static void _quickSort(Integer[] list, int low, int high) {
if (low < high) {
int middle = getMiddle(list, low, high); //将list数组进行一分为二
System.out.println("***" + middle);
_quickSort(list, low, middle - 1); //对低字表进行递归排序
_quickSort(list, middle + 1, high); //对高字表进行递归排序
}
}
public static void main(String[] args) {
// 数据数组
Integer[] num = {3,5,2,8,7};
sort(num);
// for(int i=0; i< num.length; i++){
// System.out.print(num[i]+" ");
// }
}
}
/**
* @ClassName: QuickSort.java
* @Description: 快速排序算法
* @author Bert
* 2014-4-3 下午4:21:21
*/
public class QuickSort {
/**
* 排序算法
* @param num 数据组
* @throws Exception
*/
public static void sort(Integer[] num) {
if (num != null && num.length > 0) {
_quickSort(num, 0, num.length - 1);
} else {
System.out.println("数组为空!");
}
}
public static int getMiddle(Integer[] list, int low, int high) {
int tmp = list[low]; // 数组的第一个作为中轴
while (low < high) { // 仅当区间长度大于1时才须排序
while (low < high && list[high] >= tmp) {
high --;
}
list[low] = list[high]; //比中轴小的记录移到低端
while (low < high && list[low] <= tmp) {
low++;
}
list[high] = list[low]; //比中轴大的记录移到高端
}
list[low] = tmp; //中轴记录到尾
return low; //返回中轴的位置
}
public static void _quickSort(Integer[] list, int low, int high) {
if (low < high) {
int middle = getMiddle(list, low, high); //将list数组进行一分为二
System.out.println("***" + middle);
_quickSort(list, low, middle - 1); //对低字表进行递归排序
_quickSort(list, middle + 1, high); //对高字表进行递归排序
}
}
public static void main(String[] args) {
// 数据数组
Integer[] num = {3,5,2,8,7};
sort(num);
// for(int i=0; i< num.length; i++){
// System.out.print(num[i]+" ");
// }
}
}