---------快排-----表排-----基数排序(桶排序)-----
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了---------快排-----表排-----基数排序(桶排序)-----相关的知识,希望对你有一定的参考价值。
其思想就是 在 一堆数字里面找一个 枢纽数字 然后将数字分成了两堆 , 一个大于该数字,一个小于该数字. 然后去递归的治理 最后合并一下就OK了.
---------------附上一个极为简陋的代码-------------------
// 依然是 递归实现~~~好恶心. void Quicksort( ElementType A[], int N ) { if(N<2) return; pivot = 从A[] 中选一个主元; //主元选择的要恰当. 将S = { A[] \ pivot } 分成2 个独立子集: A1={a∈S|a<=pivot } 和 和 A2={a∈S|a>=pivot }; A[] = Quicksort(A1,N1) {pivot} Quicksort(A2,N2); }
在我们去 取主元的话 我们经常是 去 头中尾 这三个数字之中的中位数.
第一步 筛选主元
ElementType Median3(ElementType A[],int left,int right) { int center=(left+right)/2; if(A[left])>A[center]) swap(A[left},A[center]); if(A[left]>A[right]) swap(A[left],A[Right]); if(A[center]>A[right]) swap(A[center],A[right]); swap(A[center],A[right]); //这样 最后两个数字有序了. //只需要考虑 A[left+1]-A[righ-2] 就可以了. return A[right-1]; }
第二步 子集划分
以上是关于---------快排-----表排-----基数排序(桶排序)-----的主要内容,如果未能解决你的问题,请参考以下文章
十大排序算法-快排-希尔-堆排-归并-冒泡-桶排-选择-插入-计数-基数-1