排序算法:快速排序

快速排序:不稳定的排序

通过一趟排序将要排序的数据分割成独立的两部分,

其中一部分的所有数据都比另外一部分的所有数据都要小,

然后再按此方法对这两部分数据分别进行快速排序,

整个排序过程可以递归进行,以此达到整个数据变成有序序列


快速排序是通常被认为在同数量级(O(nlog2n))的排序方法中平均性能最好的。但若初始序列按关键码有序或基本有序时,快排序反而蜕化为冒泡排序


时间复杂度:

最差:O(n^2)

平均:O(nlog2n)

最好:O(nlog2n)

空间复杂度:

O(nlog2n)


package test;

import java.util.Arrays;

public class quickSort {
	static int partition(int A[], int l, int h) {
		int i = l; 
		int j = h;
		int x = A[l];
		while(i < j) {
			while( A[j] >= x && i < j) {
				j--;
			}
			A[i] = A[j];
			while( A[i] <= x && i < j) {
				i++;
			}
			A[j] = A[i];
		}
		A[i] = x;
		return i;
	}
	
	static void qSort(int A[], int l, int h) {
		if(l < h) {
			int k = partition(A,l,h);
			qSort(A,l,k-1);
			qSort(A,k+1,h);
		}
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int A[] = new int[]{4,3,7,1,8,2,5,9,0,6};
		qSort(A,0,A.length-1);
		System.out.print(Arrays.toString(A));
		return;
	}

}


猜你喜欢

转载自blog.csdn.net/linyk3/article/details/48175407