掌握数据结构和算法知识是成为一名合格开发人员的必须,不管你是使用任何一种编程语言。python
举例:算法
若是a+b+c=1000,且a^2+b^2=c^2(a,b,c为天然数),如何求出全部a,b,c可能的组合?编程
思路(枚举法):数据结构
算法是计算机处理信息的本质,由于计算机程序本质上是一个算法来告诉计算机确切的步骤来执行一个指定的任务。通常地,当算法在处理信息时,会从输入设备或数据的存储地址读取数据,把结果写入输出设备或某个存储地址供之后再调用。app
算法是独立存在的一种解决问题的方法和思想。数据结构和算法
对于算法而言,实现的语言并不重要,重要的是思想。编程语言
算法能够有不一样的语言描述实现版本(如C描述、C++描述、Python描述等),咱们如今是在用Python语言进行描述实现。spa
1.输入: 算法具备0个或多个输入.net
2.输出: 算法至少有1个或多个输出code
3.有穷性: 算法在有限的步骤以后会自动结束而不会无限循环,而且每个步骤能够在可接受的时间内完成
4.肯定性:算法中的每一步都有肯定的含义,不会出现二义性
5.可行性:算法的每一步都是可行的,也就是说每一步都可以执行有限的次数完成
时间复杂度与大O记法
每台机器执行的总时间不一样
可是执行基本运算数量大致相同
1.基本操做,即只有常数项,认为其时间复杂度为O(1)
2.顺序结构,时间复杂度按加法进行计算
3.循环结构,时间复杂度按乘法进行计算
4.分支结构,时间复杂度取最大值
5.判断一个算法的效率时,每每只须要关注操做数量的最高次项,其它次要项和常数项能够忽略
6.在没有特殊说明时,咱们所分析的算法的时间复杂度都是指最坏时间复杂度