/**
* 快速排序
* @author **
* date : 2012/11/9
*/
package com.ccsu.arithmetic.sort;
public class QuickSort {
/**
* @param array
* @param p
* @param q
* @return 划分位置
*/
public static int partition(int array[], int p, int q) {
int x = array[p];
int i = p;
for (int j = p + 1; j <= q; j++) {
if (array[j] < x) {
i += 1;
swap(array, i, j);
}
}
swap(array, p, i);
return i;
}
// 交换数据
public static void swap(int[] array, int m, int n) {
int temp = array[m];
array[m] = array[n];
array[n] = temp;
}
public static void quickSort(int array[], int p, int q) {
if (p < q) {
int r = partition(array, p, q);
quickSort(array, p, r - 1);
quickSort(array, r + 1, q);
}
}
public static void main(String[] args) {
int[] array = new int[] { 2, 1, 3, 4, 5, 9, 7, 6 };
quickSort(array, 0, array.length - 1);
for (int i : array) {
System.out.print(i + " ");
}
}
}
|