文档详情

数据结构——内部排序算法比较.doc

发布:2019-09-09约3.62千字共6页下载文档
文本预览下载声明
广 西 大 学 实 验 报 告 第 PAGE 1 页 共 NUMPAGES 6 页 姓名__马瑞良_______________学号___0807100333_______ ____计网_______专业__083______班 ______2009______年____12_____月_____08____日 实验内容 内部排序算法比较 指导教师 实验内容 对各种内部排序算法进行比较 二、实验要求 (1)任意输入5组各10个数据; (2)对冒泡排序、直接插入排序、简单选择排序、快速排序、希尔排序、堆排序的关键字比较和交换次数进行统计。 三、所需主要仪器及现有套数: 微机 台 软件: visual C++ 四、程序源码: #includeiostream using namespace std; struct Rec { int key; }; //直接插入排序 void instpass(Rec r[],int n,int m,int k) { cout直接插入排序结果是:\n; m=0;k=0; int i,j,x; for(i=2;i=n;i++) { r[0]=r[i]; j=i-1; x=r[i].key; while(m++,xr[j].key) { r[j+1]=r[j]; j--; }; r[j+1]=r[0]; k++; } } //冒泡排序 void bubbsort(Rec r[],int n,int m,int k) { cout冒泡排序结果是:\n; m=0;k=0; int i,j; Rec x; bool flag; for(i=1;i=n-1;i++) { flag=true; for(j=1;j=n-i;j++) if(m++,r[j].keyr[j+1].key) { flag=false; x=r[j]; r[j]=r[j+1]; r[j+1]=x; k++; }; if(flag) break; } } //直接选择排序 void selesort(Rec r[],int n,int m,int l) { m=0;l=0; cout直接选择排序结果是:\n; int i,j,k; Rec x; for(i=1;i=n-1;i++) { k=i; for(j=i+1;j=n;j++) if(m++,r[j].keyr[k].key) k=j; if(m++,i!=k) { x=r[i]; r[i]=r[k]; r[k]=x; l++; } }; } //快速排序 void qkpass(Rec r[],int s,int t,int i,int m,int k) { int j,x; Rec rp; i=s; j=t; rp=r[s]; x=r[i].key; while(m++,ij) { while(m++,(ij)(r[j].key=x)) j--; r[i]=r[j]; while(m++,(ij)(r[i].key=x)) i++; r[j]=r[i]; }; r[i]=rp; k++; } void qksort0(Rec r[],int s,int t,int m,int n) { int k; if(st) { qkpass(r,s,t,k,m,n); qksort0(r,s
显示全部
相似文档