1..算法原理
前博已描述的快速排序每次将数组分割成2部分,对2部分(继续递归分割)分别进行排序,最后将其合并实现整个数组的排序。Howard、Fine等教授提出的Stooge排序算法则将数组分成3部分,分别对其排序后合并。伪代码如下:
STOOGT_SORT(A,left,right)
- if A[left]>A[right]
- then exchange (A[left],A[right])
- if i+1>= j
- then return // 不多余2个元素时 在此返回
- k=(j-i+1)/3
- stooge_sort(A,left,right-k) //第一个2/3部分
- stooge_sort(A,left+k,right) //最后一个2/3部分
- stooge_sort(A,left,right-k) //第一个2/3部分