内部排序算法比较(2)
结果分析:冒泡排序,直接插入排序以及简单选择排序比较次数较多,快速排序,希尔排序及堆排序比较次数较少;并可得冒泡排序和直接插入排序相对较稳定,其他四种内部排序为不稳定排序。
六.源程序清单 #include\#include\#include\#include\#include%using namespace std;
#define LIST_INIT_SIZE 50000
int bj1=0,yd1=0,bj2=0,yd2=0,bj3=0,yd3=0,bj4=0,yd4=0,bj5=0,yd5=0,bj6=0,yd6=0,n;//yd,bj为记录关键字比较和移动的次数 typedef struct {
int key; }ElemType; typedef struct {
ElemType *elem; int length; }SqList;
void addlist(SqList &L)//初始化顺序表 {
a: printf(\请输入你要输入的个数:\ scanf(\ if(n>50000) {
printf(\超出范围重新输入!!!\\n\ goto a; }
L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType)); if(!L.elem)exit(0); }
void random(SqList &L)//随机数产生程序 {
L.length=0;
static bool first=true; if(first) {
srand(time(0)); first=false;
}//使输入相同个数时每次产生的随机数不同 for(int i=1;i
void memory(SqList &M,SqList &L)//记录L,使每个排序算法都用一组相同的随机数 { M.length=0; for(int i=1;i void BubbleSort(SqList &L)//冒泡排序 { int i,j; for(i=1;i 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; yd1+=3; } } } } void InsertSort(SqList &L)//直接插入排序 { int i,j; for(i=2;i<=L.length;i++) { if(L.elem[i].key L.elem[0].key=L.elem[i].key; yd2++; j=i-1; bj2++; while(L.elem[0].key L.elem[j+1].key=L.elem[j].key; j--; yd2++; bj2++; } L.elem[j+1].key=L.elem[0].key; yd2++; } } } void SelectSort(SqList &L)//选择排序 { int i,j,k; for(i=1;i for(j=i+1;j bj3++; if(L.elem[j].key 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; yd3+=3; } } } int Partition(SqList &L,int low,int high)//快速排序 { int pivotkey; L.elem[0]=L.elem[low]; yd4++; pivotkey=L.elem[low].key; while (low yd4++; while(low L.elem[low]=L.elem[high]; bj4++; yd4++; while (low L.elem[high]=L.elem[low]; bj4++; yd4++; } L.elem[low]=L.elem[0]; yd4++; return low; } void QSort(SqList &L,int low,int high) {//对顺序表的子序列作快速排序 int pivotloc; if(low pivotloc=Partition(L,low,high); QSort(L,low,pivotloc-1); QSort(L,pivotloc+1,high); } } void QuickSort(SqList &L) {//对顺序表L作快速排序 QSort(L,1,L.length); } void ShellSort(SqList &L)//希尔排序 { int i,d=L.length/2,j,w=0,k; while(w w=1; for(i=w;i for(j=i+d;j if(L.elem[i].key>L.elem[j].key) { k=j; bj5++; } } 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; yd5+=3; } w++; } d=d/2; w=1; } } void HeapAdjust(SqList &L,int s,int m ) {//调整L.elem[s]的关键字,使L.elem[s?..m]成为一个大根堆 SqList rc; rc.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType)); if(!rc.elem)exit(0); int j; rc.elem[0]=L.elem[s]; for(j=2*s;j<=m;j*=2) {bj6++; if(j L.elem[s]=rc.elem[0]; } void HeapSort(SqList &L) {//对顺序表L进行堆排序 int i; for(i=L.length/2;i>0;--i) HeapAdjust(L,i,L.length); for(i=L.length;i>1;--i)
相关推荐:
- [学前教育]MC9S12XS256RMV1 xs128芯片手册4
- [学前教育]安东尼语录经典语录
- [学前教育]e级gps控制测量技术设计书
- [学前教育]苏教版2022-2022学年八年级下学期期末
- [学前教育]装修公司推广 营销
- [学前教育]家政服务合同(完整版)
- [学前教育]湖北省2016届高三联考语文试题
- [学前教育]爱立信无涯学习系统LTE题库1-LTE基础知
- [学前教育]揭秘大众柴油车作弊软件原理
- [学前教育]人才流失原因及对策分析
- [学前教育]房屋建筑施工工程劳务分包合同
- [学前教育]国际贸易实务试卷A卷09.6
- [学前教育]校园废品回收活动计划方案书范文格
- [学前教育]电大成本会计试题及答案
- [学前教育]大学物理实验 华南理工出版社 绪论答案
- [学前教育]爱丁堡产后抑郁量表
- [学前教育]液压冲击的危害、产生原因与防止方法(
- [学前教育]学生工作总结高一学生期中考试总结_020
- [学前教育]人民医院医疗废物管理规章制度大全
- [学前教育]阳光维生素的巨大抗癌潜能阅读题答案.d
- 马云在云锋基金江苏论坛闭幕式的发言
- 试论小学体育教育中的心理健康教育-教
- 语文A版一年级下册《语文乐园一》教学
- 2021四川大学物理化学考研真题经验参考
- [人教A版]2015-2016学年高中数学 第二
- 终端网点销售返利协议书
- 江苏省2015年眼科学主治医师青光眼考试
- 2017年部编人教版八年级语文上册教案
- 十一中学七年级英语上册Unit7Howmuchar
- 以赛促教的创新性实验教学机制建设实践
- 平凉市崆峒区2015七年级下生物期末试题
- 琶洲(地块五)A、B塔楼1、2#塔吊基础
- 一级医院工作制度与人员岗位职责
- 2018北京西城区高三二模理科数学试题及
- 炒股密码线技术 - 图文
- 职高学生生涯发展辅导教案
- 语文人教版四年级上册8 世界地图引出的
- 最新最新人教版二年级上册全册数学教案
- 2017高考英语全国2卷精彩试题(有问题
- 普通心理学笔记




