快速排序是程序员所必须掌握的算法之一,将一个数组分为两个子数组,将两部分独立排序,因此,切分(partition)的位置就显得很重要。
以下为Java实现
package quickSort;
import java.util.Scanner;
public class quicksort
{
public static void main(String []args){
int n;
Scanner in=new Scanner(System.in);
n=in.nextInt();
int[] a=new int[n];
for(int i=0;i<n;i++)
a[i]=in.nextInt();
int start = 0;
int end=a.length-1;
sort(a,start,end);
for(int i=0; i<a.length; i++){
System.out.println(a[i]);
}
}
public static int partition(int arr[],int low,int high)
{
int key;
key=arr[low];
while(low<high)
{
while(low<high&&arr[high]>=key )
high--;
if(low<high)
arr[low++]=arr[high];
while(low<high&&arr[low]<=key )
low++;
if(low<high)
arr[high--]=arr[low];
}
arr[low]=key;
return low;
}
public static void sort(int[] arr,int start,int end)
{
int pos;
if (start<end)
{
pos=partition(arr, start, end);
sort(arr,start,pos-1);
sort(arr,pos+1,end);
}
}
}