首页 > 编程语言 >第一章算法概述总结

第一章算法概述总结

时间:2022-12-12 14:35:13浏览次数:31  
标签:空行 问题 函数 代码 第一章 注释 算法 概述

代码规范

类及其排版格式
声明属性依次序是public:、protected:、private:。
关键字public,protected,private不要缩进,声明的函数和变量缩进一个制表符。
类声明前应加上注释,注明该类的主要作用。
不改变对象成员变量的类成员函数都应标记为const,可以预防意外的变动,提高程序的健壮性。
类中成员必须进行初始化,可以通过构造函数的初始化列表初始化成员或者写一个专门初始化成员的函数(如init())。
有继承关系的基类中析构函数一定要声明为虚函数。
为了防止头文件重复包含,应在头文件处加上#ifndef/#define/#endif宏。
函数和成员变量的声明分开。

函数的声明与定义
返回类型和函数名在同一行,合适的话,参数也放在同一行。

返回值总是和函数名在同一行;参数列表的左圆括号总是和函数名在同一行。

函数名和左圆括号间没有空格;圆括号与参数间没有空格。

左大括号总是新起一行;右大括号总是单独位于函数最后一行。

函数的声明(头文件)和实现处(CPP)的所有形参名称必须保持一致。

函数的内容总与左括号保持一个制表符的缩进。

参数间的逗号总加一个空格。

函数的大小一般不要超过50行,函数越小,代码越容易维护。

函数声明前应加上注释,注明该函数的作用,如果该函数有比较多的参数,还应该加上参数含义和返回值的注释。

如果函数的参数是类对象,应使用对象的指针或引用来传递,以提高效率。

空行

空行起着分隔程序段落的作用。空行得体(不过多也不过少)将使程序的布局更加清晰。空行不会浪费内存,虽然打印含有空行的程序是会多消耗一些纸张,但是值得。所以不要舍不得用空行。

代码行

一行代码只做一件事情,如只定义一个变量,或只写一条语句。这样的代码容易阅读,并且方便于写注释。

if、for、while、do等语句自占一行,执行语句不得紧跟其后。不论执行语句有多少都要加{}。这样可以防止书写失误。

对齐

程序的分界符‘{’和‘}’应独占一行并且位于同一列,同时与引用它们的语句左对齐。

{ }之内的代码块在‘{’右边一个制表符左对齐。

注释

注释虽然写起来很痛苦,但对保证代码可读性至为重要。当然,注释的确很重要,但最好的代码本身就是文档,类名和变量名意义明确要比通过注释解释模糊的命名要好的多。

 

算法概念

“算法是任何定义良好的计算程式,它取某些值或值的集合作为输入,并产生某些值或值的集合作为输出。因此,算法是将输入转化为输出的一系列计算步骤。”

算法的空间复杂度

程序p的空间复杂度指该程序运行时所需的内存空间大小,包括:

指令空间:存储经过编译之后的程序指令所需的空间。

数据空间:常量和简单变量、复合变量(数组、链表、树和图等)

环境栈空间(函数调用)

复合变量所需空间常常和问题实例特征有关。

决定算法时间复杂性的因素

算法的时间复杂性取决于

(1)求解问题的规模;

2)具体的输入数据;

⑶算法本身的设计。

难解问题

有一类问题目前是难解问题(NPC问题)

顶点覆盖问题

子集和问题

哈密尔顿回路问题旅行售货员问题

以上问题都可以归结为一个问题

如果发现某一个问题与上述问题等价,则该问题目前没有多项式解

标签:空行,问题,函数,代码,第一章,注释,算法,概述
From: https://www.cnblogs.com/IIICEY/p/16975951.html

相关文章

  • 常见数据结构与算法的Python实现
    有人问我数据结构与算法怎么学?怎么用Python实现常见的数据结构算法?我找到一个github标星66.6k+的仓库,把各种常见算法用Python实现了,而且还有动图演示,非常值得推荐。(黄海广)仓......
  • 推荐:常见算法的python实现(github上25000多star)
    近日在github上发现一个25000多star的仓库,把各种常见算法用python实现了,而且还有动图演示,非常值得推荐。仓库说明这个仓库用python语言实现了绝大部分算法,主要是用于教学目......
  • 《3D计算机视觉:原理、算法及应用》一本全搞定
       1966年,人工智能学家Minsky在给学生布置的作业中,要求学生通过编写一个程序让计算机告诉我们它通过摄像头看到了什么,这也被认为是计算机视觉(ComputerVision,CV)最早的......
  • 数据算法之数据结构
      packagecom.Lucky.DataStructure;/*数据结构:逻辑结构+储存结构+储存结构的运算逻辑结构分为:线性结构1:1树状结构......
  • 他奠定了当今计算机算法的规范化和量化度量
    如今的我们对算法可谓并不陌生,由于互联网发展迅猛,哪怕没有系统学习过计算机底层理论的程序员,也接触过无数的算法。昨天笔者看到一个开放性思考题,内容是这样的:如果一个程序只......
  • vue源码分析-diff算法核心原理
    这一节,依然是深入剖析Vue源码系列,上几节内容介绍了VirtualDOM是Vue在渲染机制上做的优化,而渲染的核心在于数据变化时,如何高效的更新节点,这就是diff算法。由于源码中关于d......
  • Floyd算法
    Floyd算法dijistra算法解决,从一点出发,到其它所有点的最短路径。此算法解决,从任何一点出发,到任何点的最短路径。https://zhuanlan.zhihu.com/p/87480486理解......
  • 详解计算机网络体系结构-计算机网络概述【王道计算机网络笔记】
    计算机网络的概念计算机网络:是一个分散的、具有独立功能的计算机系统,通过通信设备与线路连接起来,由功能完善的软件实现资源共享和信息传递的功能计算机系统:包含各种系统的......
  • gmgo国密算法库
    gmgo国密算法库一、背景介绍基于go1.17.5实现的国密算法库,包括:sm2:基于emmansun/gmsm的sm2部分实现部分扩展。sm3:基于emmansun/gmsm的sm3部分实现部分扩展。sm4......
  • 大数据【企业级360°全方位用户画像】之USG模型和决策树分类算法
        在之前的一篇博客​​《大数据【企业级360°全方位用户画像】之RFM模型和KMeans聚类算法》​​​中,博主为大家带来了KMeans聚类算法的介绍。并在之后,基于不同的......