Golang算法实现:算法介绍

Golang算法实现:算法介绍

算法是程序开发中不可或缺的一部分,很多的数据操做都需要通过一定的算法来实现,一个程序运行的效率高低过半是由所使用的算法来决定.本着提升自己的目的,今天开始来好好学习算法吧

什么是算法

起始网络上有很多对算法的定义,很多讲的非常详细的.个人认为:算法是解决具体问题的一系列操作的集合.怎么来说呢?我们所要使用的算法肯定都是为了解决问题的是吧,而且解决问题通常都需要一些操做,可能只需要操做一步,也有可能需要操做十步,但我们的目的都是为了解决问题!这是关键,所以我觉着算法就是解决某个具体问题的一系列操做的集合.在计算机领域来说,算法是一系列程序指令,用于处理特定的运算和逻辑问题

知道了什么是算法,那么常用的算法有那些呢?一般来说,常用的基础算法包括运算、查找、分类、排序等,高级一些的包括最优决策、聚类等等

和算法密切相关的就是数据结构,很多高级的算法都是需要一定的数据结构来支撑的,他们是密不可分的两部分.什么是数据结构呢?数据结构就是数据的组织、管理和存储的格式,使用的特定的格式存储的目的就是为了高校地访问和修改数据.比如以后会学到链表的查找、二叉树的排序等,统统都是和数据结构密不可分的.那么数据结构的组成方式有那些呢?常用的有:线性结构等.比如数组、链表、栈就是线性结构的,二叉树等都是树姓结构的,图一般都有的比较少了,假如说需要构建一个朋友圈的朋友关系图的时候肯定就需要用到图的结构啦

既然有了算法,那也一定有衡量算法好坏的方法.通常来讲,衡量一个算法的好坏就在于对相同的结果(正确的结果),不同的算法所使用的时长以及内存占用的大小来决定的,同等机器条件下,时间越短、内存占用越小的算法通常就是我们所需要的最优算法.所以衡量一个算法通常就是从时间复杂度以及空间复杂度两个方面进行衡量.时间复杂度就是一个算法运行时间长度的度量,空间复杂度就是一个算法在运行过程中临时占用存储空间大小的度量.

  • 时间复杂度:时间复杂度用大O表示,记作T(n)=O(f(n)),常见的时间复杂度从低到高顺序为:O(1)O(n)O(nlogn)O(n²)
  • 空间复杂度:空间复杂度用大O表示,记作S(n)=O(f(n)),递归算法的空间复杂度和递归的深度成正比.常用的空间复杂度从低到高有:O(1)O(n)O(n²)

最后修改于 2023-10-17