计算机软件技术基础实验.docx
《计算机软件技术基础实验.docx》由会员分享,可在线阅读,更多相关《计算机软件技术基础实验.docx(12页珍藏版)》请在冰点文库上搜索。
![计算机软件技术基础实验.docx](https://file1.bingdoc.com/fileroot1/2023-5/27/f0d97e36-9ea8-4a8b-baf7-3c7d58350354/f0d97e36-9ea8-4a8b-baf7-3c7d583503541.gif)
计算机软件技术基础实验
一.题目
实验3查找(线性查找和二分查找)排序(冒泡排序和快速排序)
二.环境
Vc6.0
三.逻辑框图
顺序查找:
折半查找:
冒泡排序:
快速排序:
四.程序源代码及结果
线性查找:
#include
#include
#include
#include
usingnamespacestd;
#defineM20
typedefstruct
{intkey;
floatinfo;
}JD;
intseqsrch(JDr[],intn,intk)
{
inti=n;
r[0].key=k;
while(r[i].key!
=k)
i--;
if(i==0)
cout<<"很遗憾,你要查找的数不存在,呵呵。
"<return(i);
}
intmain()
{
JDm[M];
intk,l;
for(inti=0;i{
m[i].key=rand()%100;
cout<}
cout<cout<<"Pleaseinputthenumberyouwanttosearch(0-99):
"<cin>>k;
l=seqsrch(m,M,k);
if(l!
=0)
cout<<"你查找的数字在第"<return0;
}
实验结果:
二分查找:
#include
#include
#include
#include
usingnamespacestd;
#defineM20
typedefstruct
{intkey;
floatinfo;
}JD;
intbinsrch(JDr[],intn,intk)
{
intlow,high,mid,found;
low=1;
high=n;
found=0;
while((low<=high)&&(found==0))
{
mid=(low+high)/2;
if(k>r[mid].key)
low=mid+1;
elseif(k==r[mid].key)
found=1;
else
high=mid-1;
}
if(found==1)
return(mid);
else
return(0);
}
intmain()
{
JDm[M+1];
intk,l;
for(inti=1;i<=M;i++)
{
m[i].key=rand()%100;
cout<}
cout<cout<<"Pleaseinputthenumberyouwanttosearch(0-99):
"<cin>>k;
l=binsrch(m,M,k);
if(l!
=0)
cout<<"你查找的数字在第"<else
cout<<"很遗憾,你要找的数不存在,呵呵"<return0;
}
运行结果:
冒泡排序:
#include
typedefstruct
{intkey;
/*floatinfo;*/
}JD;
voidbubble_sort(JDr[],intn)
{intm,i,j,flag=1;
JDx;
m=n-1;
while((m>0)&&(flag==1))
{flag=0;
for(j=1;j<=m;j++)
if(r[j].key>r[j+1].key)
{flag=1;
x=r[j];
r[j]=r[j+1];
r[j+1]=x;
}
m--;
}
}
voidmain()
{
staticJDr[]={0,49,38,65,97,76,13,27,30};
inti,n=8;
bubble_sort(r,n);
for(i=1;i<=n;i++)
printf("%d",r[i].key);
printf("\n");
}
运行结果:
快速排序:
#include
typedefstruct
{intkey;
/*floatinfo;*/
}JD;
voidqksort(JDr[],intt,intw)
{inti,j,k;
JDx;
if(t>=w)return;
i=t;j=w;x=r[i];
while(i{
while((i=x.key))j--;
if(iwhile((iif(i}
r[i]=x;
qksort(r,t,j-1);
qksort(r,j+1,w);
}
voidmain()
{
staticJDr[]={0,49,38,65,97,76,13,27,50};
inti,n=8;
qksort(r,1,n);
for(i=1;i<=n;i++)
printf("%d",r[i].key);
printf("\n");
}
运行结果:
五.总结