快速排序


快速排序 quick sort:
把要排序的数据分成两部分,通常先取第一个数a1与其他数比较,
把数据区分成两部分:比a1小的在a1前面,比a1大的,在a1后面,
再按这个方法分别对这两部分数据进行排序,最后得到整个排好序的数据列。


public static void main(String[] args) {
		
		int data[] = {6,5,8,1,3,3,0,21,10,9};
		
		System.out.println("before sort:");
		for(int i=0;i<data.length;i++){
			System.out.print(data[i] + " ");
		}
		
		quickSort(data,0,data.length-1);
		
		System.out.println();
		System.out.println("after sort:");
		for(int i=0;i<data.length;i++){
			System.out.print(data[i] + " ");
		}
	}
	
	public static void quickSort(int data[],int start,int end){
		
		int index = 0;
		if(start<end){
			index = sort(data,start,end);
			quickSort(data,start,index-1);
			quickSort(data,index+1,end);
		}
	}
	
	public static int sort(int data[],int start,int end){

		int index = data[start];
		while(start<end){
			while(start<end && index<data[end]){
				end--;
			}
			data[start]=data[end];
			
			while(start<end && index>=data[start]){
				start++;
			}
			data[end] = data[start];
		}
		data[start]=index;
		
		return start;
	}


posted @ 2014-03-31 14:01  senjixu  阅读(146)  评论(0编辑  收藏  举报