内部排序算法的实现与比较
#include"iostream"
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
#include"time.h"
using namespace std;
using std::cout;
using std::endl;
void MergeSort(int r[],int r1[],int s,int t);
void Merge(int r[],int r1[],int s,int m,int t);
#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)//初始化顺序
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
{
a:
printf("请输入你要输入的个数:");
scanf("%d",&n);
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
30000)
goto a; ++L.length;
}
}
void memory(SqList &M,SqList &L)//记录L,使每个排序算法都用一组相同的随机数{
M.length=0;
for(int i=1;iL.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;
yd1+=3;
}
}
}
}
void InsertSort(SqList &L)//直接插入排序
{
int i,j;
for(i=2;i<=L.length;i++)
{
if(L.elem[i].key=pivotkey)
--high;
L.elem[low]=L.elem[high];
bj4++;
yd4++;
while (lowL.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 MergePass(SqList &L)//归并排序
{
int r[5000],r1[5000],s=0,t,k;
k=L.length;
t=k-1;
MergeSort(r,r1,0,t);//调用方法MergeSort()
}
void MergeSort(int r[],int r1[],int s,int t)
{
if(s==t)r1[s]=r[s];
else
{
int m=(s+t)/2;
MergeSort(r,r1,s,m);//递归调用
MergeSort(r,r1,m+1,t);
Merge(r1,r,s,m,t);//调用方法Merge() }
}
void Merge(int r[],int r1[],int s,int m,int t)
{
int i=s;
int j=m+1;
int k=s;
while(i<=m&&j<=t)
{
if(r[i]<=r[j]){r1[k++]=r[i++];bj6++;yd6++;}
else {r1[k++]=r[j++];bj6++;yd6++;}
}
if(i<=m)while(i<=m)
{r1[k++]=r[i++];yd6++;}
else while(j<=t)
{r1[k++]=r[j++];yd6++;}
}
void main()
{
SqList L,M;
int a;
M.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!M.elem)exit(0);
a:
cout<<" ---------------------------------内部排序算法比较-----------------------------\n";
cout<<"************************************欢迎使用***********************************\n";
cout<<"**********************************(1)运行程序**********************************\n";
cout<<"**********************************(2)退出系统**********************************\n";
cout<
本文档为【内部排序算法的实现与比较】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。