实验5数组.docx
- 文档编号:11981271
- 上传时间:2023-04-16
- 格式:DOCX
- 页数:20
- 大小:21.84KB
实验5数组.docx
《实验5数组.docx》由会员分享,可在线阅读,更多相关《实验5数组.docx(20页珍藏版)》请在冰豆网上搜索。
实验5数组
中南大学
实验报告
课程名称c++程序设计
实验项目名称实验4实验5实验6
指导老师向瑶
实验学生班级电子信息工程1503
实验学生姓名陶韬
学 号0903130309
实验时间2016.4.1至4.10
实验地点校本部科技楼4楼
实验成绩评定
实验5数组
实验5.1
5.1.1.题目:
用选择法对10个整数排序。
十个整数用cin输入,将选择排序与起泡法比较,分析它们的特点和效率
选择法的算法:
第一轮把第一个数和剩下的9个数比较通过比较交换使得第一轮交换后第一个数为这10个数中最小的,然后进行第二轮交换把第二个数和剩下的8个数比较,通过比较交换使得第二轮交换后第二个数为这9个数中最小的
5.1.2代码
#include
usingnamespacestd;
voidsawp(int&a,int&b);//交换函数的形参为引用
voidSetArray(int*a);//对数组进行初始化的函数
voidShowArray(int*a);//对数组进行输出的函数
voidSortArray(int*a);//对数组进行排序的函数
intmain()
{
inta[10];
SetArray(a);//把数组的首地址传递给该函数
cout<<"排序前的数组为"< ShowArray(a); SortArray(a); cout<<"排序后的数组为"< ShowArray(a); } voidswap(int&a,int&b) { inttemp; temp=a; a=b; b=temp; } voidSetArray(int*a) { inti; cout<<"请输入10个整数"< for(i=0;i<10;i++) cin>>a[i]; } voidShowArray(int*a) { inti; for(i=0;i<10;i++) { cout< if((i+1)%4==0)//每输出4个数组元素就换行 cout< } } voidSortArray(int*a) { inti,j; for(i=0;i<9;i++)//外层循环控制轮数一共进行10-1=9轮 for(j=i+1;j<=9;j++) { if(a[i]>a[j]) swap(a[i],a[j]); } } 5.1.3输出结果 请输入10个整数 1 2 34 56 67 234 9 0 8 7 排序前的数组为 123456 6723490 87排序后的数组为 0127 893456 67234Pressanykeytocontinue 5.1.4用冒泡法进行排序 算法将相邻2个数比较,将较小的调到前头第一轮结束后最大的数应该沉到最下面,然后进行第二轮比较结束后第二大的数沉到倒数第二位以此类推 一共进行n-1轮比较第j轮要进行j-1轮比较 代码#include usingnamespacestd; voidsawp(int&a,int&b);//交换函数的形参为引用 voidSetArray(int*a);//对数组进行初始化的函数 voidShowArray(int*a);//对数组进行输出的函数 voidSortArray(int*a);//对数组进行排序的函数 intmain() { inta[10]; SetArray(a);//把数组的首地址传递给该函数 cout<<"排序前的数组为"< ShowArray(a); SortArray(a); cout<<"排序后的数组为"< ShowArray(a); } voidswap(int&a,int&b) { inttemp; temp=a; a=b; b=temp; } voidSetArray(int*a) { inti; cout<<"请输入10个整数"< for(i=0;i<10;i++) cin>>a[i]; } voidShowArray(int*a) { inti; for(i=0;i<10;i++) { cout< if((i+1)%4==0)//每输出4个数组元素就换行 cout< } } voidSortArray(int*a) { inti,j; for(i=0;i<9;i++) for(j=0;j<9-i;j++) if(a[j]>a[j+1]) swap(a[j],a[j+1]); } 5.1.5运行结果 请输入10个整数 1 2 34 56 67 234 9 0 8 7 排序前的数组为 123456 6723490 87排序后的数组为 0127 893456 67234Pressanykeytocontinue 5.1.6小结选择法和冒泡法的区别 相同点: 1.都要通过(n-1)组排出具有n个数的顺序 2.都是通过逐个相比 区别: 1.冒泡法顾名思义就是把小的泡冒到上面,大的泡沉到下面,最值在中间和其他的值交换; 2.而选择法,是假定了一个最值,所以最值和其他的值的交换就发生在假定最值得地方 实验5.2 有15个数按由小到大的顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数数是数组中第几个元素的值。 如果该数不在数组中,则输出“无此数”。 以15个数用赋初值的方法在程序中给出。 要找的数用scanf函数输入。 5.2.1代码 #include #include usingnamespacestd; voidSetArray(int*a);//对数组进行设置的函数 voidFind(int*a,intx);//寻找函数形参为数组的地址和整型变量 intmain() { inta[15]; SetArray(a);//对数组进行初始化 intNumberFind;//定义要寻找的数字 charSwitch='Y';//定义一个开关变量用来保存用户输入的提示符先初始化为'Y' while(Switch=='Y'||Switch=='y') { cout<<"请输入要寻找的数"< scanf("%d",&NumberFind); if(NumberFinda[14]) { cout<<"要寻找的数据不在数组范围内即无此数"< continue; } Find(a,NumberFind);//调用寻找函数 cout<<"请问需要输入新的数据继续寻找吗? 请输入Y(y)或者N(n)"< cin>>Switch; } return0; } voidSetArray(int*a) { inti; cout<<"请按照由小到大的顺序输入15个整数"< cin>>a[0]; for(i=1;i<15;) { cin>>a[i]; if(a[i] cout<<"输入的数据不满足题目要求请重新输入"< else i++; } } voidFind(int*a,intNumberFind) { inttop=0,bot=14,mid=7; boolflag=false; while(! flag&&top<=bot) { if(NumberFind==a[mid]) { cout<<"找到了数字"< flag=true; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 数组