快速排序

来源:互联网 发布:mac os 系统修复 编辑:程序博客网 时间:2024/06/05 17:03

快速排序

按标值二分,小的在前,大的在后。

平均时间复杂度O(nlogn),

最坏时间复杂度O(n^2),

辅助空间O(logn)

<每次都要分给一个额外空间,而总共有logn次> 

package Website;public class sort2 {public static void main(String[] args) {int[] arr={1,5,3,2,7,8,9,4,6};System.out.print("排序前:");sort2.output(arr);sort2.QuickSort(arr,0,arr.length-1);System.out.println();System.out.print("排序后:");sort2.output(arr);}public static void QuickSort(int[] a,int head,int tail){int i,j,x;if(head<tail){i=head;j=tail;x=a[i];while(i<j){while((i<j)&&(a[j]>x)){j--;}if(i<j){a[i]=a[j];i++;}while((i<j)&&(a[i]<x)){i++;}if(i<j){a[j]=a[i];j--;}}a[i]=x;QuickSort(a, head, i-1);QuickSort(a, i+1, tail);}}public static void output(int[] a){for(int i=0;i<a.length;i++){System.out.print(a[i]+" ");}}}


原创粉丝点击