1. 程式人生 > >快速排序(直接)-初

快速排序(直接)-初

import java.util.Scanner;

public class QuickSort_1 {

	static void show(int []arr)
	{
		for(int i=0;i<arr.length;i++)
			System.out.print(arr[i]+" ");
	}
	
	static void sort(int []arr,int low,int high)
	{
		if(high-low<1)
			return;
		
		int l=low;
		int h=high;
		int key=arr[l];
		boolean flag=true;
		
	L1:	while(l<h)
		{
			if(flag)
			{
				for(int i=h;i>l;i--)
					if(arr[i]<=key)
					{
						arr[l]=arr[i];
						l++;
						flag=!flag;
						h=i;
						continue L1;
					}
				h=l;
			}
			else 
			{
				for(int i=l;i<h;i++)
					if(arr[i]>=key)
					{
						arr[h]=arr[i];
						h--;
						flag=!flag;
						l=i;
						continue L1;
					}
				l=h;
			}
		}
		arr[l]=key;
		sort(arr,low,l-1);
		sort(arr,l+1,high);
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
		int []arr=new int[n];
		for(int i=0;i<arr.length;i++)
			arr[i]=sc.nextInt();
		show(arr);
		sort(arr,0,arr.length-1);
		System.out.println();
		show(arr);
	}

}