C++排序算法之快速排序
来源:互联网 发布:域名估价 编辑:程序博客网 时间:2024/05/18 00:52
七、快速排序,找出一个元素(理论上可以随便找一个)作为基准(pivot),然后对数组进行分区操作,使基准左边元素的值都不大于基准值,基准右边的元素值都不小于基准值,如此作为基准的元素调整到排序后的正确位置。递归快速排序,将其他n-1个元素也调整到排序后的正确位置。最后每个元素都是在排序后的正确位置,排序完成。所以快速排序算法的核心算法是分区操作,即如何调整基准的位置以及调整返回基准的最终位置以便分治递归。
<pre name="code" class="cpp">//!快速排序template<class T>void QuickSort(T* Data,int len){QuickSort(Data,0,len-1);}template<class T>void QuickSort(T* Data,int left,int right){if (left<right){int key=*(Data+left);int low=left;int high=right;while (low<high){while ((low<high)&&*(Data+high)>=key){high--;}if (low < high) {// 找到小于准基数key的元素swap(Data,low,high);low++;// low下标后移} else {// 没有找到比准基数小的元素// 说明high位置右边元素都不小于准基数break;}while ((low<high)&&*(Data+low)<=key){low++;}if (low < high) {// 找到比基准数大的元素swap(Data,high,low);high--;// high下标前移,} else{// 没有找到比基准数小的元素// 说明low位置左边元素都不大于基准数break;}}*(Data+low)=key;QuickSort(Data,left,low-1);QuickSort(Data,low+1,right);}}
0 0
- c--经典算法之排序---快速排序
- 排序算法 - 快速排序(C++)
- C++快速排序算法
- 快速排序算法 C
- C快速排序算法
- C快速排序算法
- 算法导论 之 快速排序[C语言]
- C语言算法之快速排序
- 排序算法之快速排序
- 排序算法之快速排序
- 排序算法之快速排序
- 排序算法 之 快速排序
- 排序算法之快速排序
- 排序算法之快速排序
- 排序算法之快速排序
- 排序算法之快速排序
- 排序算法之快速排序
- 排序算法之快速排序
- js操作表格
- 如何利用xml文件部署jsp项目
- InterlliJ java 项目报错 javacTask: 源发行版 1.6 需要目标发行版 1.6
- keepalived + nginx组建高可用负载平衡Web server集群
- Weka-无监督属性过滤器-AddExpressionMathExpression[6-2]
- C++排序算法之快速排序
- Hadoop的历史和创建
- SSM整合中spring-mybatis.xml详解
- centOS目录结构详细版
- Git 工作流程
- Centos 添加用户和更改root权限
- Spring @Transactional工作原理
- web 简单的整合shiro
- 无障碍小技巧