public class T20131210 {
public static void main(String[] args)
{
int test[] = { 0, 24, 2, 10, 7, 44, 3 };
test = 快速排序(test,0,test.length-1);
for(int a=0;a<test.length;a++)
{
System.out.println(test[a]);
}
}
public static int[] 快速排序(int[] arr,int start,int end)
{
if(start<end)
{
int pivotkey=(start+end)/2;
int key=arr[pivotkey];
for (int left=start,right=end;left<=right;left++,right--)
{
if ((arr[left]>key && left<pivotkey))
{
swtich(arr,left,pivotkey);
pivotkey=left;
}
if ((arr[right]<key && right>pivotkey))
{
swtich(arr,right,pivotkey);
pivotkey=right;
}
}
快速排序(arr,start,pivotkey-1);
快速排序(arr,pivotkey+1,end);
}
return arr;
}
public static void swtich(int[] arr,int x,int y)
{
int temp=arr[x];
arr[x]=arr[y];
arr[y]=temp;
}
}
//在平均状况下,时间复杂度Ο(n log n)。事实上,快速排序通常明显比其他Ο(n log n) 算法更快。
//在最坏状况下,时间复杂度Ο(n2)但这种状况并不常见。
//结果:
//0
//2
//3
//7
//10
//24
//44