免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1281 | 回复: 0
打印 上一主题 下一主题

快速排序的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-12-19 23:46 |只看该作者 |倒序浏览
这是算法引论中介绍的快速排序算法:
  1. QUICKSORT(A,p,r)

  2. 1  if p < r

  3. 2      then q <-- PARTITION(A,p,r)

  4. 3           QUICKSORT(A,p,q)

  5. 4           QUICKSORT(A,q + 1,r)


  6. PARTITION(A,p,r)

  7. 1  x  <--- A[p]

  8. 2  i <--- p - 1

  9. 3  j <--- r + 1

  10. 4  while TRUE

  11. 5      do repeat j <--- j - 1

  12. 6           until A[j] <=  x

  13. 7         repeat i <--- i + 1

  14. 8           until A[i] >= x

  15. 9         if i < j

  16. 10            then exchange A[i] <---> A[j]

  17. 11            else return j
复制代码


从代码的PARTITION部分可以看出,每次调用PARTITION,数组A[]中的任意元素至多被交换一次,也就是说整个排序过程中,A[]中的任意元素至多只能交换 n-1 次(n个元素的数组)。我想构造一个某个元素交换了 n-1 次的序列,试了试但没能构造出来。3,1,2 这个太简单除外。也可能这个交换次数的确界不是 n-1? 一时好奇,发出来问问。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP