列举你所知道的排序方法,请写出快速排序的伪代码
排序的方法有:插入排序(直接插入排序、希尔排序),交换排序(冒泡排序、快速排序),选择排序(直接选择排序、堆排序),归并排序,分配排序(箱排序、基数排序)
快速排序的伪代码:
/ /使用快速排序方法对a[ 0 :n- 1 ]排序
从a[ 0 :n- 1 ]中选择一个元素作为m i d d l e,该元素为支点
把余下的元素分割为两段left 和r i g h t,使得l e f t中的元素都小于等于支点,而right 中的元素都大于等于支点
递归地使用快速排序方法对left 进行排序
递归地使用快速排序方法对right 进行排序
所得结果为l e f t + m i d d l e + r i g h t
伪代码:
1 quicksort(A, lo, hi) 2 if lo < hi 3 p = partition(A, lo, hi) 4 quicksort(A, lo, p - 1) 5 quicksort(A, p + 1, hi) 6 7 partition(A, lo, hi) 8 pivot = A[hi] 9 i = lo //place for swapping 10 for j = lo to hi - 1 11 if A[j] <= pivot 12 swap A[i] with A[j] 13 i = i + 1 14 swap A[i] with A[hi] 15 return i