算法学习一:复杂度、对数器、二分法与异或运算

1.在数据结构上玩流程,程序=数据结构+算法

2.评估算法指标:

时间复杂度;

额外空间复杂度;(与功能无关的空间)

常数项时间复杂度;

3.选择排序:从0到n-1位置找到最小值,跟0位置的数交换,从1到N-1位置上的再找到最小值,跟1位置交换,继续循环。。。

4.冒泡排序:从0开始一直循环到N-1位置,从0开始,一个一个比较,比较0和1位置上谁大,大的交换到后面,遍历一次之后,最大的数,被放到了n-1位置上,继续从0开始遍历,第二次遍历到n-2位置上。

5.冒泡排序和选择排序,性能不受数据的初始顺序影响,该做什么还是得做什么;

6.插入排序:先让0到0位置有序 ,第二步,让0到1位置有序,第三步,让0到2位置有序。。。如果比前一位小,一直往前换,直到0位置或者不比前一位小。数据的初始顺序会影响算法性能,如果数据直接有序,则不需要排序,最好时间复杂度O(n),最坏时间复杂度O(n2)

7.确定算法流程的总操作数量和样本数量之间的关系表达式:

按照最差的情况估计;

把整个流程拆分为基本操作,保证每个基本操作都是常数时间复杂度;

如果数量为n,看看基本动作数量和n的关系;

O(n)就是代表最差的情况,最差时间复杂度;

8.最优解:

先满足时间复杂度,再满足空间

9.算法分类:知道怎么算的算法;知道怎么试的算法

10.对数器:

11.二分法

12.认识异或

不开辟额外空间交换两个值

猜你喜欢

转载自blog.csdn.net/ZhaoXia_hit/article/details/106889812