算法基础

220 阅读2分钟

数据结构

对于数据的组织方式被称为数据结构(int,float,char) 列表和字典也是一种数据结构

算法

  • 是计算机处理信息的本质就是算法。
  • 算法是独立存在的一种解决问题的方法和思想

算法的五大特征

  1. 输入

  2. 输出

  3. 有穷性:算法在有限的步骤之后会自动结束而不会无限循环,并且每个步骤都可以再可接受的时间内完成。

  4. 确定性:算法中的每一步都有确定的含义,不会出现二义性

  5. 可行性:算法的每一步都是可行的, 即每一步都能够执行有限的次数完成

链表

eg: 如果 a+b+c=1000, a^2+b^2=c^2,如何求得 abc 可能的组合? 解 1: 枚举法

for i in range(1,1001):
	for j in range(1,1001):
		k = 1000- i-j
		if i*i + j*j == k*k:
			print(i,j,k)

算法复杂度和大 O 表示法

影响运算效率的因素

  • 机器的执行效率
  • 算法的复杂度
  • 但在一般情况下,每台机器执行的总时间不同,但执行基本运算量是大体相同的

时间复杂度

  • 定义:

    在计算机科学中,时间复杂性,又称时间复杂度,算法的时间复杂度是一个函数,它定性描述该算法的运行时间。这是一个代表算法输入值的字符串的长度的函数。时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数。使用这种方式时,时间复杂度可被称为是渐近的,亦即考察输入值大小趋近无穷时的情况。

  • 最优时间复杂度、最坏时间复杂度、平均时间复杂度

    • 考虑最坏复杂度:保证性能
    • 考虑平均时间复杂度

    时间复杂度的比较

    O(1) < O(logn)< O(n) < O(nlogn) < O(n^2) < O(n^3) < O(2^n) < O(n!) < O(n^n)

python 中算法优劣问题

timeit 模块

from timeit import Timer

image.png 速度:4>3>1 >2