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.认识异或
不开辟额外空间交换两个值