云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 内部排序算法实现与性能分析课程设计

内部排序算法实现与性能分析课程设计

  • 62 次阅读
  • 3 次下载
  • 2025/5/5 3:18:02

4、详细设计:

4.1函数调用关系图

开始界面 起 泡 排 序 各排序输出结果 各种排序用时比较 直插 排 序 选择 排 序 希尔排 序 快速 排 序 起泡 排 序 用时 直插 排 序 用时 选择 排 序 用时 希尔 排 序 用时 快速 排 序 用时 5、各个算法实现的源程序:

5.1、冒泡排序及其主要算法

void qipao(SqList &L)//起泡 {

start_t=clock(); int i=1,j;

while(i

for(j=1;j

if(L.elem[j].key>L.elem[j+1].key) {

L.elem[0].key=L.elem[j].key; L.elem[j].key=L.elem[j+1].key; L.elem[j+1].key=L.elem[0].key; }

第 9 页 共 14 页

}

i++; }

5.2、直接插入排序及其主要算法

void InsertSort(SqList &L) //直接插入 {

start_t=clock(); int i,j;

for(i=2;i<=L.length;i++) {

if(L.elem[i].key<=L.elem[i-1].key)//“<”,需将L.r[i]插入有序子序列 {

L.elem[0].key=L.elem[i].key; //复制为哨兵

j=i-1;

while(L.elem[0].key

L.elem[j+1].key=L.elem[j].key; //记录后移 j--; }

L.elem[j+1].key=L.elem[0].key; //插入到正确位置 } }

5.3、选择排序及其主要算法

void SelectSort(SqList &L)//选择 {

int i,j,k,;

for(i=1;i

for(j=i+1;j

if(L.elem[j].key<=L.elem[k].key) {

L.elem[0].key=L.elem[i].key; L.elem[i].key=L.elem[k].key;

L.elem[k].key=L.elem[0].key;//与第i个记录交换 } }

第 10 页 共 14 页

5.4、希尔排序及其主要算法

void xier(SqList &L)//希尔排序并打印结果 { start_t=clock(); int i,d=L.length/2,j,w=0,k,yd=0,bj=0; //间长为d while(wL.elem[j].key) { k=j; bj++; if(i!=k) { L.elem[0].key=L.elem[i].key; L.elem[i].key=L.elem[k].key; L.elem[k].key=L.elem[0].key; } } } } d=d/2;//间隔变为原来 的一半 }

5.5、快速排序及其主要算法

int Partition(SqList &L,int low,int high)//快速排序 {

int pivotkey;

L.elem[0]=L.elem[low]; yd1++;

pivotkey=L.elem[low].key; //用子表的第一个记录作曲轴记录 while (low

yd1++;

while(low=pivotkey) --high;

第 11 页 共 14 页

L.elem[low]=L.elem[high]; //将比轴记录小的记录交换到低端 while (low

L.elem[high]=L.elem[low]; //将比轴记录大的记录交换到高端 }

L.elem[low]=L.elem[0];

return low; //返回曲轴所在位置 }

void QSort(SqList &L,int low,int high) { //对顺序表L.r[low..high]做快速排序 int pivotloc; int i=1;

if(low

pivotloc=Partition(L,low,high);//将L.r[low..high]一分为二 QSort(L,low,pivotloc-1); //对低字表递归排序 QSort(L,pivotloc+1,high); //对高字表递归排序 } }

void QuickSort(SqList &L) { //对顺序表L做快速排序 int j;

BeforeSort();

QSort(L,1,L.length); for(j=1;j<=L.length;j++) printf(\ display(yd1,bj1); }

6、调试分析:

1.产生随机数

第 12 页 共 14 页

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

4、详细设计: 4.1函数调用关系图 开始界面 起 泡 排 序 各排序输出结果 各种排序用时比较 直插 排 序 选择 排 序 希尔排 序 快速 排 序 起泡 排 序 用时 直插 排 序 用时 选择 排 序 用时 希尔 排 序 用时 快速 排 序 用时 5、各个算法实现的源程序: 5.1、冒泡排序及其主要算法 void qipao(SqList &L)//起泡 { start_t=clock(); int i=1,j; while(iL.elem[j+1].key) {

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com