算法导论学习笔记-第七章-快速排序

本篇博客详细讲解了快速排序算法的核心概念、复杂度分析,并对比了标准快速排序与随机快速排序的区别。通过伪代码和实际代码实现,深入探讨了算法优化策略。

第七章 快速排序

 

总结:这章讲了快速排序的算法,分析了算法复杂性,又讲了快速排序的随机版

 

1.    快速排序

PARTITION(A, p, r)A[p…r]进行就地重排,返回q,其中A[p…q-1]中的元素都小于A[q]A[q+1,…r]中的元素都大于A[q]

QUICKSORT(A, p, r)递归排序

分析:最坏情况O(n^2)

         最好情况O(nlgn)

         平均情况O(n^2)

 

伪代码

PARTITION (A, p, r)

x <- A[r]

i <- p-1

for j <- p to r-1

      do if A[j]<=x

           then i <- i+1

                  exchange A[i] <-> A[j]

exchange A[i+1] <-> A[r]

return i+1

 

QUICKSORT(A, p, r)

if p < r

      then q <- PARTION(A, p, r)

QUICKSORT(A, p, q-1)

QUICKSORT(A, q+1, r)

 

 

  

2.    快速排序的随机版

引入了随机算法,在PARTITION中不用A[r]做主元,而是从子数组A[p…r]中随机选择一个元素作为主元。

分析:最坏情况O(n^2)

         最好情况O(nlgn)

         平均情况O(n^2)

 

伪代码

RANDOMIZED-PARTITION(A, p, r)

i <- RANDOM(p, r)

exchange A[i] <-> A[r]

return PARTITION(A, p, r)

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值