跳至主要內容
03-这个算法为啥占了这么大空间?

手札

从不浪费时间的人,没有工夫抱怨时间不够。——杰弗逊

1. 空间复杂度

你好,我是悦创。

一个算法在计算机存储器上所占用的存储空间,包括算法本身所占用的存储空间,算法的输入、输出数据所占用的存储空间和算法在运行过程中临时占用的存储空间这三个方面。

欢迎关注我公众号:AI悦创,有更多更好玩的等你发现!

公众号:AI悦创【二维码】

AI悦创原创...大约 1 分钟Python 算法科普指南Python 算法科普指南
02-为什么这个算法要执行这么长时间?

手札

今天应做的事没有做,明天再早也是耽误了。——裴斯泰洛齐

1. 什么是时间复杂度

你好,我是悦创。

一个高级语言编写的程序的运行时间主要取决于三个因素:

  • 算法的方法,策略;
  • 问题的输入规模;
  • 计算机执行指令的速度。

问题的输入规模是客观的、限定的,要加快算法的效率绝不能影响问题的输入规模。计算机执行指令的速度虽然可以有显著提升,但其发展时间较长,也不是确定的,总不能终日盼着计算机性能的提升。所以提高算法的效率,减少程序运行时间,改进算法的策略是至关重要的。


AI悦创原创...大约 8 分钟Python 算法科普指南Python 算法科普指南
01-开篇词:你知道什么是算法吗?

手札

勤能补拙是良训,一分辛劳一分才。——华罗庚

1. 算法的定义

你好,我是悦创。

对于算法的解释,全世界的定义是不唯一的。

我给出的算法的定义是:一系列用来解决单个或多个问题,或有执行计算功能的命令的集合。再结合上输入与输出,算法就是将输入转换为输出的一系列计算步骤的集合。


AI悦创原创...大约 6 分钟Python 算法科普指南Python 算法科普指南
15 排序八大金刚-归并排序

1. 归并排序原理

先来看第一种高级排序算法:归并排序。“归并”一词出自《后汉书》,意为“合并”。

顾名思义,归并排序算法就是一个先把数列拆分为子数列,对子数列进行排序后,再把有序的子数列合并为完整的有序数列的算法。它实际上采用了分治的思想,我们会在后面文章中深度讲解分治思想。

归并排序的平均时间复杂度是 O(nlogn)O(nlogn),最好情况下的时间复杂度是O(nlogn)O(nlogn), 最坏情况下的时间复杂度也是O(nlogn)O(nlogn)。它的空间复杂度是 O(1)O(1),另外还是一个稳定的排序算法。


AI悦创原创...大约 9 分钟Python 算法科普指南Python 算法科普指南
14 排序八大金刚-冒泡排序

你好,我是悦创。

最后一种基础排序是冒泡排序。算法采用重复遍历数组并依次比较相邻元素的方法来排序。由于在冒泡算法进行排序的过程中,最大数或者最小数会慢慢“浮”到数组的末尾,所以算法由此命名。

冒泡排序的平均时间复杂度是 O(n2)O(n^2),最好情况下的时间复杂度是 O(n)O(n), 最坏情况下的时间复杂度是 O(n2)O(n^2)。空间复杂度是 O(1)O(1)。冒泡排序算法是一个稳定的排序算法。


AI悦创原创...大约 6 分钟Python 算法科普指南Python 算法科普指南
13 排序八大金刚-选择排序

选择排序表示从无序的数组中,每次选择最小或最大的数据,从无序数组中放到有序数组的末尾,以达到排序的效果。

选择排序的平均时间复杂度,最好情况下的时间复杂度O(n2)O(n^2),最坏情况下的时间复杂度都是O(n2)O(n^2)。另外,它是一个不稳定的排序算法。


AI悦创原创...大约 6 分钟Python 算法科普指南Python 算法科普指南
12 排序八大金刚-插入排序

1. 排序简介

排序通常指把毫无规律的数据,按照一种特定的规律,整理成有序排列的状态。一般情况下,排序算法按照关键字的大小,以从小到大或从大到小的顺序将数据排列。

排序算法是最基础也最重要的算法之一,在处理大量数据时,使用一个优秀的排序算法可以节省大量时间和空间。因为不同的排序算法拥有不同的特点,所以我们根据情况选择合适的排序算法。

直观地讲,插入排序算法把给定数组中的元素依次插入到一个新的数组中,最终得到一个完整的有序数组。

2. 插入排序效率分析


AI悦创原创...大约 10 分钟Python 算法科普指南Python 算法科普指南