您的当前位置:首页正文

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

2020-07-24 来源:客趣旅游网


电子科技大学 通信与信息工程 学院

标 准 实 验 报 告

(实验)课程名称 软件技术基础实验

电子科技大学教务处制表

电 子 科 技 大 学

实 验 报 告

一、实验室名称:校公共机房 二、实验项目名称:查找与排序 三、实验学时:4学时 四、实验原理:

使用VS2010等C语言集成开发环境(IDE),在微型计算机上对程序进行编辑、编译、连接与运行。通过上机练习掌握顺序查找、二分查找函数、简单选择法、直接插入法、冒泡法排序、快速排序等方法、过程和实际应用。

五、实验目的:

1. 熟练掌握顺序查找、二分查找函数、简单选择法、直接插入法、冒泡法

排序、快速排序等算法方法并实现。 2. 掌握课程平台使用方法。

六、实验内容:

ex5_1:查找

设有序序列的数据元素为: (3,10,13,17,40,43,50,70) 1)编写顺序查找函数 2)编写二分查找函数

3)在主程序中输入关键字(43和5),分别调用两种查找函数,输出结果。

//第一题

#include #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;ilength;i++) {

if(a1==l->data[i])

{printf(\"%d是第%d个元素\\n\ }

if(flag==0) printf(\"表中没有大小为%d的元素\\n\

flag=0;

for(i=0;ilength;i++) {

if(a2==l->data[i])

{printf(\"%d是第%d个元素\\n\ }

if(flag==0) printf(\"表中没有大小为%d的元素\\n\}

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;ilength;i++) {

m=(low+h)/2; //如果有小数就向小的数字取值9/2=4

if(l->data[m]==a1)

{printf(\"%d是第%d个元素\\n\ else if(l->data[m]<22) low=m+1; else if(l->data[m]>22) h=m-1; }

if(flag!=1)

printf(\"表中没有大小为%d的元素\\n\

flag=0; low=0;

h=l->length-1;

for(i=0;ilength;i++) {

m=(low+h)/2; //如果有小数就向小的数字取值9/2=4 if(l->data[m]==a2)

{printf(\"%d是第%d个元素\\n\ else if(l->data[m]<22) low=m+1; else if(l->data[m]>22) h=m-1; }

if(flag!=1)

printf(\"表中没有大小为%d的元素\\n\}

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 #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; ilength; i++) {

temp=l->data[i]; j=i-1;

while ((j>=0)&& (tempdata[j])) {

l->data[j+1]=l->data[j]; j=j-1; }

l->data[j+1]=temp;

if(i==9) printf(\"最终结果:\\n\"); for(k=0;klength;k++)

printf(\" %d \ printf(\"\\n\"); } }

void maopaopx(list_type *l) {

int temp; int i,j,k;

printf(\"-----------------------------------------------\\n\"); printf(\"冒泡排序法:\\n\"); printf(\"分步过程:\\n\"); for(i=0;ilength;i++) {for(j=i+1;jlength;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;klength;k++) printf(\" %d \ printf(\"\\n\"); } }

void xuanzepx(list_type *l) {

int temp,i,j,k;

printf(\"-----------------------------------------------\\n\"); printf(\"选择排序法:\\n\"); printf(\"分步过程:\\n\"); for(i=0;ilength;i++) {

for(j=i;jlength;j++) {

if(l->data[j]data[i]) {

temp=l->data[j]; l->data[j]=l->data[i]; l->data[i]=temp; } }

if(i==9) printf(\"最终结果:\\n\"); for(k=0;klength;k++)

printf(\" %d \ 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; iint 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; iprintf(\"-----------------------------------------------\\n\"); }

因篇幅问题不能全部显示,请点此查看更多更全内容