电子科技大学软件技术基础实验报告(共7页).doc
精选优质文档-倾情为你奉上电子科技大学 通信与信息工程 学院标 准 实 验 报 告(实验)课程名称 软件技术基础实验 电子科技大学教务处制表电 子 科 技 大 学实 验 报 告一、实验室名称:校公共机房 二、实验项目名称:查找与排序三、实验学时: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 20typedef struct int datamaxnum; int length;list_type;void create(list_type *l) l->length=8; l->data0=3; l->data1=10; l->data2=13; l->data3=17; l->data4=40; l->data5=43; l->data6=50; l->data7=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->datai) 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->datai) 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->datam=a1) printf("%d是第%d个元素n",a1,(m+1);flag=1;break; else if(l->datam<22) low=m+1; else if(l->datam>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->datam=a2) printf("%d是第%d个元素n",a2,(m+1);flag=1;break; else if(l->datam<22) low=m+1; else if(l->datam>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 20typedef struct int datamaxnum; int length;list_type;void create(list_type *l) l->length=10; l->data0=513; l->data1=87; l->data2=512; l->data3=61; l->data4=908; l->data5=170; l->data6=897; l->data7=275; l->data8=653; l->data9=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->datai; j=i-1; while (j>=0)&& (temp<l->dataj) l->dataj+1=l->dataj; j=j-1; l->dataj+1=temp; if(i=9) printf("最终结果:n"); for(k=0;k<l->length;k+) printf(" %d ",l->datak); 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->datai>l->dataj) temp=l->datai;l->datai=l->dataj;l->dataj=temp; if(i=9) printf("最终结果:n"); for(k=0;k<l->length;k+) printf(" %d ",l->datak); 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->dataj<l->datai) temp=l->dataj; l->dataj=l->datai; l->datai=temp; if(i=9) printf("最终结果:n"); for(k=0;k<l->length;k+) printf(" %d ",l->datak); 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 ", ai); 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.datai); printf ("n"); printf("-n");专心-专注-专业