快排
快速排序是目前算法中用得比较多的一种排序方法,一般工程师算法考试中会直接使用冒泡排序,虽然写起来容易,但是效率比较低,不推荐使用。
网上有各种排序方法的介绍及比较,大家可以询问谷哥度娘。这里简单介绍快排的思想,供参考。
quicksort(A[],l,r) { if l<r s=position(A[],l,r) quicksort(A[],l,s-1) quicksort(A[],s+1,r) } position(A[],l,r) { pivot=A[l] i=l j=r while i<=j while A[i]<=p:i++ while A[j]>=p:j-- if i<j: swap(A[i],A[j]) swap(A[l], A[j]) return j }
position(A[], s, r) v ← A[r] i ← s – 1 for j in s → r – 1 if A[j] ≤ v i++, swap( A[i], A[j]) swap(A[i+1], A[r]) return i + 1