高手解释下这程序!(排序)

[复制链接]
查看11 | 回复0 | 2008-4-25 15:06:48 | 显示全部楼层 |阅读模式
快速排序的递归算法。书上没有有很详细的解释吗?可以搜索一下“快速排序”,网络上很多地方有详尽的关于“快速排序”的解释。要一句一句地解释你那程序,打字太辛苦啊~~我畏难~建议你先把“冒泡排序”搞透,还要把“递归”的概念搞懂!我从网络上搜索来的一个例子:http://student.zjzk.cn/course_ware/data_structure/web/jingcaiwenzhang/wenzhang7.htm快速排序 算法的基本思想:快速排序的基本思想是基于分治策略的。对于输入的子序列ap..ar,如果规模足够小则直接进行排序,否则分三步处理:分解(Divide):将输入的序列ap..ar划分成两个非空子序列ap..aq和aq+1..ar,使ap..aq中任一元素的值不大于aq+1..ar中任一元素的值。 递归求解(Conquer):通过递归调用快速排序算法分别对ap..aq和aq+1..ar进行排序。 合并(Merge):由于对分解出的两个子序列的排序是就地进行的,所以在ap..aq和aq+1..ar都排好序后不需要执行任何计算ap..ar就已排好序。 这个解决流程是符合分治法的基本步骤的。因此,快速排序法是分治法的经典应用实例之一。算法Quick_Sort的实现:Pascal实现:Procedure Quick_Sort(p,r:TPosition;var L:TList); {快速排序}varq:TPosition;beginif L[p..r]足够小 then Sort(p,r,L) {若L[p..r]足够小则直接对L[p..r]排序}elsebeginq:=Partition(p,r,L); {将L[p..r]分解为L[p..q]和L[q+1..r]两部分}Quick_Sort(p,q,L); {递归排序L[p..q]}Quick_Sort(q+1,r,L); {递归排序L[q+1..r]}end;end;
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行