java快速排序

 
package com.duapp.itfanr;

public class Test {

	public static void main(String args[]) {

		int [] a = {1,3,2,5,0,6,9} ;
		quickSort(a , 0, a.length-1 ) ;
		for(int i:a)
			System.out.println(i) ;
	}

	static void quickSort(int a[], int start, int end) {
		int i, j;
		i = start;
		j = end;
		if ((a == null) || (a.length == 0))
			return;
		while (i < j) {
			while (i < j && a[i] <= a[j])
				// 以数组start下标的数据为key,右侧扫描
				j--;
			if (i < j) { // 右侧扫描,找出第一个比key小的,交换位置
				int temp = a[i];
				a[i] = a[j];
				a[j] = temp;
			}
			while (i < j && a[i] < a[j])
				// 左侧扫描(此时a[j]中存储着key值)
				i++;
			if (i < j) { // 找出第一个比key大的,交换位置
				int temp = a[i];
				a[i] = a[j];
				a[j] = temp;
			}
		}
		if (i - start > 1) { // 递归调用,把key前面的完成排序
			quickSort(a, 0, i - 1);
		}
		if (end - j > 1) {
			quickSort(a, j + 1, end); // 递归调用,把key后面的完成排序
		}
	}

}
  参考: [1]. http://baike.baidu.com/view/19016.htm

你可能感兴趣的:(java,快速排序)