首页 / 算法 / 算法第二章上机实践报告
算法第二章上机实践报告
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了算法第二章上机实践报告,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3319字,纯文字阅读大概需要5分钟。
内容图文
1.代码规范(参考google的c++代码规范)
包含文件的名称及次序:
将包含次序标准化可增强可读性、避免隐藏依赖(hidden dependencies,注:隐藏依赖主要是指包含的文件编译),次序如下:C 库、C++库、其他库的.h、项目内的.h。
命名规范:
1、总体规则:不要随意缩写,如果说 ChangeLocalValue 写作ChgLocVal还有情可原的话,把ModifyPlayerName写作MdfPlyNm就太过分了,除函数名可适当为动词外,其他命名尽量使用清晰易懂的名词;
2、宏、枚举等使用全部大写+下划线;
3、变量(含类、结构体成员变量)、文件、命名空间、存取函数等使用全部小写+下划线,类成员变量以下划线结尾,全局变量以g_开头;
4、普通函数、类型(含类与结构体、枚举类型)、常量等使用大小写混合,不含下划线;
格式:
1、行宽原则上不超过80列,把22寸的显示屏都占完,怎么也说不过去;
2、尽量不使用非ASCII字符,如果使用的话,参考 UTF-8 格式(尤其是 UNIX/Linux 下,Windows 下可以考虑宽字符),尽量不将字符串常量耦合到代码中,比如独立出资源文件,返不仅仅是风格问题了;
4、函数参数、逻辑条件、初始化列表:要么所有参数和函数名放在同一行,要么所有参数并排分行;
5、除函数定义的左大括号可以置于行首外,包括函数/类/结极体/枚举声明、各种语句的左大括号置于行尾,所有右大括号独立成行;
6、./->操作符前后丌留空格,*/&不要前后都留,一个就可,靠左靠右依各人喜好;
7、预处理指令/命名空间不使用额外缩进,类/结构体/枚举/函数/语句使用缩进;
8、初始化用=还是()依个人喜好,统一就好;
9、return不要加();
10、水平/垂直留白不要滥用,怎么易读怎么来
2.数学之美读后感
数学之美这本书的名字让我萌生了兴趣,在以前初高中时代做数学题最多只有成就感,而并没有感受过其中的内涵,我看的是第八章的简单之美,因为我自己本身也是比较喜欢简单的事情,做事也是追求简洁和效率。有些东西表面上看起来没什么大作用,但是却是很多东西的基础,就像文中所说的布尔代数一样,在刚推出布尔代数的八十多年里一直没起到什么作用,直到后来人们将布尔代数利用在了逻辑电路和索引中,从而进一步演变成各种现代化的高效搜索引擎。在我们的生活中也有许多不起眼的东西,我们要善于发现它们的用处,说不定哪一天就能派上用场。
1.实践题目
7-2 改写二分搜索算法
2.问题描述
设a[0:n-1]是已排好序的数组,请改写二分搜索算法,使得当x不在数组中时,返回小于x的最大元素位置i和大于x的最小元素位置j。当搜索元素在数组中时,i和j相同,均为x在数组中的位置。
3.算法描述
源代码:
#include <iostream> using namespace std; int main(){ ????int a[100000],x,n,i,r,l,mid; ? ? ? ? cin>>n>>x; ????????for(i=0;i<n;i++){ ????????????cin>>a[i]; ? ? ? ? } ????????l=0; ????????r=n - 1; ????????while(l<=r){ ????????????mid= (l+r)>>1; ????????????if(x==a[mid]) break; ????????????else if(x<a[mid]) r = mid -1; ????????????else l = mid + 1; ????????} ????????if(x==a[mid]) cout<<mid<<' '<<mid<<endl; ????????else if(x<a[mid])cout<<mid-1<<' '<<mid<<endl; ????????else cout<<mid<<' '<<mid+1<<endl; } 关键算法:二分搜索算法 ? ? ? ? 在该题目中,设定l,r,mid分别表示数组左右和中间数值的下标,然后利用二分搜索找出最接近x的数的下标并用mid表示,然后再通过a[mid]与x进行比较来获得最接近该数的两个下标。 4.算法时间与时间复杂度分析 ? ? ? ? 该算法采用了分治法的原理,每次搜索后数组长度变为原来的一半,在最坏情况下while循环被执行了(logn+1)次,while循环内算法时间为O(1),所以最坏情况下整个算法的时间复杂度为O(logn)。 5.心得体会 ? ? ? ? 在本次实验过程中有多次出现疏忽而导致算法错误的问题,在以后的实验过程中会多加注意,还有对于whlie循环语句中的终止条件要仔细研究,否则容易出错或导致代码不简洁。在遇到一些比较难的题目时要结合自己的分析与事例的验证,这样才能更快的得出最优解法并打出代码。内容总结
以上是互联网集市为您收集整理的算法第二章上机实践报告全部内容,希望文章能够帮你解决算法第二章上机实践报告所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。