基本算法
算法基本概念
算法:一个计算过程,解决问题的方法。
时间复杂度:基本语句的输出次数O(1),O表示大约,
时间复杂度是用来估算法运行时间的一个式子(单位)。
一般来说,时间复杂度高的算法比复杂度低的算法慢。
常见的时间复杂度(按效率排序)
O(1)<O(logn)<O(n)<O(nlogn)<O(n^2)<O(n^2logn)<O(n^3)
《算法导论》
如何一眼判断时间复杂度?
循环减半的过程-》O(logn)
几次循环就是n的几次方的复杂度
空间复杂度:用来评估算法内存占用大小的式子
“空间换时间”
列表查找:从列表中查找指定元素
输入:列表、待查找元素
输出:元素下标或未查找到元素
方法:
顺序查找:
从列表的第一个元素开始,顺序进行搜索,直到找到为止
二分法查找(列表必须是有序的):
从有序列表的侯选区data[0:n]开始,通过对待查找的值
与候选区中间值进行比较,可以使侯选区减少一半。
列表排序:将无序列表变为有序列表
应用场景:
各种榜单
各种表格
给二分查找用
给其他算法用
输入:无序列表
输出:有序列表
升序与降序
方法:
时间复杂度讨论----最好情况下、平均情况下和最坏情况下
排序low B三人组:
冒泡
思路:列表每两个相邻的数,如果前边的比后边的大,
就交换这两个数
代码关键点:
躺
无序区
选择
思路:一趟遍历记录最小的数,放到第一个位置;
再一趟遍历记录剩余列表中最小的数,继续放置......
代码关键点:
无序区
最小数的位置
插入
思路:列表被分为有序区和无序区;最初有序区只有一个元素。
每次从无序区选择一个元素,插入到有序区的位置,直到无序区变空。
排序NB三人组:
快速排序
思路:取一个元素P(第一个元素),使元素P归位;
归位就是列表被P分为两个部分,左边都比P小,右边
的都比P大;递归完成排序
代码关键点:
整理
递归
堆排序
归并排序
没什么人用的排序:
基数排序
希尔排序
桶排序
计数排序
算法关键点:
有序区
无序区

浙公网安备 33010602011771号