注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Leo

笑:胸怀,傲:实力,才能笑傲江湖。

 
 
 

日志

 
 

快速排序法  

2017-06-18 17:12:57|  分类: 技术管理 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

该方法的基本思想是:

1.先从数列中取出一个数作为基准数

2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。

3.再对左右区间重复第二步,直到各区间只有一个数。


//快速排序
void QuickSort(int sArray[], int iLeftBegin, int iRightEnd)
{
if (iLeftBegin < iRightEnd)
{
int i = iLeftBegin, j = iRightEnd, x = sArray[iLeftBegin];
while (i < j)
{
//从右向左找第一个小于x的数;
while (i < j && sArray[j] >= x) j--;
//交换位置,把小于当前值的放到前面去;
if (i < j) sArray[i++] = sArray[j];
//从左向右找第一个大于等于x的数;
while (i < j && sArray[i] < x) i++;
//交换位置,把大于当前值的放到后面去;
if (i < j) sArray[j--] = sArray[i];
}
//当ij相等之后,把x放回去;
sArray[i] = x;
//递归排序左右两个队列;
QuickSort(sArray, iLeftBegin, i - 1);
QuickSort(sArray, i + 1, iRightEnd);
}
}
  评论这张
 
阅读(23)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017