几种常见内部排序算法比较(4)

2025-07-27

这是在我大学期间学习C语言时学到的几种常见的内部排序算法的。在大学期间,计算机相关专业的同学,只要掌握这几种排序算法就已经足够了!

算法:首先检查数据列表中的数据数,如果小于两个,则直接退出程序。如果有超过两个以上的数据,就选择一个分割点将数据分成两个部分,小于分割点的数据放在一组,其余的放在另一组,然后分别对两组数据排序。通常分割点的数据是随机选取的。这样无论你的数据是否已被排列过,你所分割成的两个字列表的大小是差不多的。而只要两个子列表的大小差不多。

q(struct rec r[],int s,int t)

{

int i=s,j=t;

if(s<t)

{

r[0]=r[s]; ++a; c++;

do{

while(j>i&&r[j].key>=r[0].key)

{j--;

++a; }

if(i<j)

{ r[i]=r[j];

i++;

c++; }

while(i<j&&r[i].key<=r[0].key)

{i++;

++a; }

if(i<j)

{ r[j]=r[i];

j--;

c++; }

} while(i<j);

r[i]=r[0];

c++;

q(r,s,j-1);

q(r,j+1,t);

}

}

5. 堆排序

基本思想:堆排序是一树形选择排序,在排序过程中,将R[1..N]看成是一颗完全二叉树的顺序存储结构,利用完全二叉树中双亲结点和孩子结点之间的内在关系来选择最小的元素。

(2)堆的定义: N个元素的序列K1,K2,K3,...,Kn.称为堆,当且仅当该序列满足特性:


几种常见内部排序算法比较(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:股权投资基金合伙企业有限合伙协议书范本1

相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219