码迷,mamicode.com
首页 > 编程语言 > 详细

算法第二章上机实践报告

时间:2019-09-23 22:47:30      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:windows   遇到   用处   change   dde   感受   源代码   inux   使用   

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循环语句中的终止条件要仔细研究,否则容易出错或导致代码不简洁。在遇到一些比较难的题目时要结合自己的分析与事例的验证,这样才能更快的得出最优解法并打出代码。

算法第二章上机实践报告

标签:windows   遇到   用处   change   dde   感受   源代码   inux   使用   

原文地址:https://www.cnblogs.com/cyh36250726/p/11575156.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!