快排软件-Pascal快速排序程序详解
发布时间:2022-05-29
1、快速排序软件:pascal快速排序程序详解 初始关键字:[‘]一次排序后:[]49[‘]二次排序后:[13]27[38]49[49‘65]76[

Pascal快速排序程序详解

1、快速排序软件:pascal快速排序程序详解

1、快速排序软件:pascal快速排序程序详解

初始关键字:[']一次排序后:[]49[']二次排序后:[13]27[38]49[49'65]76[ 97] 3次排序后:9'[65]最终排序结果:9' 当前无序区域R[1]到R[h]的划分具体方法:设置两个指针i和j,它们的初始值​​分为i=1和j=h。取基准无序的第一条记录R[i](即R[1]),保存在变量temp中。让 j 从 h 开始向左扫描,直到找到第一个 key 小于 temp.key 的记录 R[j],并将 R[j] 移动到 i 指向的位置(这相当于交换 R[j]以及基准R[i]的位置(即temp),使得关键字小于基准关键字的记录移动到基准的左侧);然后,让 i 从 i+1 向右扫描,直到第一个关键字大于 temp.key 的记录 R[i],将 R[i] 移动到 j 指向的位置(这相当于交换R[i]和引用R[j](即temp),使key大于引用关键字的记录移动到引用的右侧);然后,让j从j-1向左扫描,这样交替改变扫描方向,从两端往中间靠拢,直到i=j,i就是参考temp的最终位置,把temp放到这个位置就完成了一个部门。算法可以描述如下: ProcereParttion(VarR:FileType;L,H:Integer;VarI:Integer);

{对无序区域R[L,H]进行分区,执行算法后得到I(L<= I<=H),I是本次分割后已经定位的参考元素的位置。如果L

Begin

I:=L;J:=H;temp:=R[I];{初始化,temp为参考元素}

While(R[J]>=temp)And(I

J:=J-1;{从右到左扫描,找到第一个小于temp的元素}

IfI

R[I]:=R[J];{相当于交换 R[I] 和 R[J]}

I:= I +1;

end;

While(R[I]<=temp)And(I

I:=I+1{从左到右扫描找到第一个大于的值temp的元素}

IfI temp found}

beginR[J]:=R[I];{相当于交换R[I]和R[J]}

J:=J-1UntilI=J;seo关键词优化排名软件。

R[I]:=temp{基准温度终于定位}

End;{Parttion}ProcereQuickSort(VarR:FileType;S,T:Integer);{在 R[S..T] 上快速排序}

Begin

IfS

begin

分区(R ,S,T,I);{除 R[S..T]}

QuickSort(R,S,I-1);{递归处理左区间R[S,I-1]}

QuickSort(R,I+1,T);{递归处理右区间R[I +1、.T]}

end;

End;{QuickSort}这是我的资料,你看看有用么?

Pascal快速排序程序详解yixianfc.com

XFM99_
XFM99_
已为您复制好微信号,点击进入微信
QQ在线咨询
在线咨询
18176216589
在线客服
18176216589
XFM99_
XFM99_
已为您复制好微信号,点击进入微信