找回密码
 注册
关于网站域名变更的通知
查看: 404|回复: 1
打印 上一主题 下一主题

《算法导论(第三版)》第七章,快速排序

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-3-10 10:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
《算法导论(第三版)》第七章,快速排序3 n, Q' e0 B) q2 d4 k5 T) i
) k) `/ E! @" _- q, S: M
main
1 X! w6 u1 E+ C+ @% z
  • clear;clc
  • A=[2 8 7 1 3 5 6 4]%测试数组
  • A=QUICKSORT(A,1,length(A))
    # r+ P0 h4 s" N5 B7 \" v
. P  u9 M: M. B5 d1 t: o# I

) K) G3 E6 D. H" ~

4 I* O7 |0 b9 ~! f& Q! \QUICKSORT
' I7 q( x0 d9 K" T
  • function [A] = QUICKSORT(A,p,r)
  • if p<r %还存在未排序的子数组
  •     [A q]=PARTITION(A,p,r);%以A(r)作为中间值来划分数组,中间值最后保存为A(q)
  •     A=QUICKSORT(A,p,q-1);%q的前半部分排序
  •     A=QUICKSORT(A,q+1,r);%q的后半部分排序
  • end
  • end$ S3 {7 s2 F+ J+ ?. [& ]
8 [7 v0 ?2 G! Q7 N9 k

5 ~/ [. F# F6 w

$ p# D; ]+ v0 q  T( B, I6 tPARTITION: \# \% ~2 P% T: T! `
  • function [A,q] = PARTITION(A,p,r)
  • flag=A(r);%A(r)为中间值
  • q=p-1;%中间值q。可能末尾为最大值,则不存在分开两侧,所以从起始前一位置分段
  • for j=p:r-1%起始值到(最后值的前一位)
  •     if A(j)<=flag
  •         q=q+1;
  •         temp=A(q);
  •         A(q)=A(j);
  •         A(j)=temp;
  •     end
  • end
  • q=q+1;%中间值的位置
  • %交换
  • temp=A(q);
  • A(q)=A(r);
  • A(r)=temp;
  • end
    ( P9 I* G: J& D. @& z! H
; i' C! i! {8 F" ?# |. {( a

; `% b) \7 v; ?; W) c0 H0 s4 c

9 J9 B3 A5 F8 X. p8 ~; x: D  T! g; X, M4 D  a  H- l* u( Q

该用户从未签到

2#
发表于 2020-3-10 17:50 | 只看该作者
看看楼主分享的快速排序代码。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-4 09:47 , Processed in 0.187500 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表