数据结构——内部排序算法比较.doc
文本预览下载声明
广 西 大 学 实 验 报 告
第 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
显示全部