电子科技大学软件技术基础实验报告5

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

电子科技大学通信与信息工程学院标准实验报告
(实验)课程名称软件技术基础实验
电子科技大学教务处制表
电子科技大学
实验报告
一、实验室名称:校公共机房
二、实验项目名称:查找与排序
三、实验学时:4学时
四、实验原理:
使用VS2010等C语言集成开发环境(IDE),在微型计算机上对程序进行编辑、编译、连接与运行。

通过上机练习掌握顺序查找、二分查找函数、简单选择法、直接插入法、冒泡法排序、快速排序等方法、过程和实际应用。

五、实验目的:
1.熟练掌握顺序查找、二分查找函数、简单选择法、直接插入法、冒泡法
排序、快速排序等算法方法并实现。

2.掌握课程平台使用方法。

六、实验内容:
ex5_1:查找
设有序序列的数据元素为:
(3,10,13,17,40,43,50,70)
1)编写顺序查找函数
2)编写二分查找函数
3)在主程序中输入关键字(43和5),分别调用两种查找函数,输出结果。

//第一题
#include <stdio.h>
#define maxnum 20
typedef struct
{
int data[maxnum];
int length;
}list_type;
void create(list_type *l)
{
l->length=8;
l->data[0]=3;
l->data[1]=10;
l->data[2]=13;
l->data[3]=17;
l->data[4]=40;
l->data[5]=43;
l->data[6]=50;
l->data[7]=70;
}
void shunxucz(list_type *l,int a1,int a2)
{
int i,flag=0;
printf("-----------------------------------------------\n");
printf("顺序查找法:\n");
for(i=0;i<l->length;i++)
{
if(a1==l->data[i])
{printf("%d是第%d个元素\n",a1,(i+1));flag=flag+1;} }
if(flag==0) printf("表中没有大小为%d的元素\n",a1);
flag=0;
for(i=0;i<l->length;i++)
{
if(a2==l->data[i])
{printf("%d是第%d个元素\n",a2,(i+1));flag=flag+1;} }
if(flag==0) printf("表中没有大小为%d的元素\n",a2);
}
void erfencz(list_type *l,int a1,int a2)
{
printf("-----------------------------------------------\n");
printf("二分查找法:\n");
int low,h,m,flag=0,i;
low=0;
h=l->length-1;
for(i=0;i<l->length;i++)
{
m=(low+h)/2; //如果有小数就向小的数字取值9/2=4
if(l->data[m]==a1)
{printf("%d是第%d个元素\n",a1,(m+1));flag=1;break;}
else if(l->data[m]<22) low=m+1;
else if(l->data[m]>22) h=m-1;
}
if(flag!=1)
printf("表中没有大小为%d的元素\n",a1);
flag=0;
low=0;
h=l->length-1;
for(i=0;i<l->length;i++)
{
m=(low+h)/2; //如果有小数就向小的数字取值9/2=4
if(l->data[m]==a2)
{printf("%d是第%d个元素\n",a2,(m+1));flag=1;break;}
else if(l->data[m]<22) low=m+1;
else if(l->data[m]>22) h=m-1;
}
if(flag!=1)
printf("表中没有大小为%d的元素\n",a2);
}
int main()
{
int flag1=43,flag2=5;
list_type list,list1,list2;
create(&list);create(&list1);create(&list2);
shunxucz(&list1,flag1,flag2);
erfencz(&list1,flag1,flag2);
printf("-----------------------------------------------\n");
}
ex5_2:排序
1)编写简单选择法函数
2)编写直接插入法函数
3)编写冒泡法排序函数
4)编写快速排序函数
5)在主程序中输入一组数据元素(513,87,512,61,908,170,897,275,653,462),分别调用4种排序函数,输出每趟排序结果。

//第二题
#include <stdio.h>
#define maxnum 20
typedef struct
{
int data[maxnum];
int length;
}list_type;
void create(list_type *l)
{
l->length=10;
l->data[0]=513;
l->data[1]=87;
l->data[2]=512;
l->data[3]=61;
l->data[4]=908;
l->data[5]=170;
l->data[6]=897;
l->data[7]=275;
l->data[8]=653;
l->data[9]=462;
}
void charupx(list_type *l)
{
printf("-----------------------------------------------\n");
printf("插入排序法:\n");
printf("分步过程:\n");
int i,j,k;
int temp;
for ( i=1; i<l->length; i++)
{
temp=l->data[i];
j=i-1;
while ((j>=0)&& (temp<l->data[j]))
{
l->data[j+1]=l->data[j];
j=j-1;
}
l->data[j+1]=temp;
if(i==9) printf("最终结果:\n");
for(k=0;k<l->length;k++)
printf("\n");
}
}
void maopaopx(list_type *l)
{
int temp;
int i,j,k;
printf("-----------------------------------------------\n");
printf("冒泡排序法:\n");
printf("分步过程:\n");
for(i=0;i<l->length;i++)
{for(j=i+1;j<l->length;j++)
{
if(l->data[i]>l->data[j])
{
temp=l->data[i];l->data[i]=l->data[j];l->data[j]=temp;
}
}
if(i==9) printf("最终结果:\n");
for(k=0;k<l->length;k++)
printf(" %d ",l->data[k]);
printf("\n");
}
}
void xuanzepx(list_type *l)
{
int temp,i,j,k;
printf("-----------------------------------------------\n");
printf("选择排序法:\n");
printf("分步过程:\n");
for(i=0;i<l->length;i++)
{
for(j=i;j<l->length;j++)
{
if(l->data[j]<l->data[i])
{
temp=l->data[j];
l->data[j]=l->data[i];
l->data[i]=temp;
}
}
if(i==9) printf("最终结果:\n");
for(k=0;k<l->length;k++)
printf("\n");
}
}
void quick_sort( int *a, int low, int high)
{
int i = low, j = high;
int temp = a[ low];
if( low >= high) return;
while( i != j)
{
while( i < j && a[ j] >= temp)
j--;
a[ i] = a[ j];
while( i < j && a[ i] <= temp)
i++;
a[ j] = a[ i];
}
a[ i] = temp;
quick_sort( a, low, i - 1);
quick_sort( a, i + 1, high);
for(i=0; i<high+1; i++)
printf(" %d ", a[i]);
printf ("\n");
}
int main()
{
int i;
list_type list,list1,list2,list3;
create(&list);create(&list1);create(&list2);create(&list3);
xuanzepx(&list2);
charupx(&list);
maopaopx(&list1);
printf("-----------------------------------------------\n");
printf("快速排序法:\n");
printf("分步过程:\n");
quick_sort(list3.data,0,list3.length-1);
printf("最终结果:\n");
for(i=0; i<list3.length; i++)
printf(" %d ", list3.data[i]);
printf ("\n");
printf("-----------------------------------------------\n");
}。

相关文档
最新文档