今天读了一些文章,讲的是算法的学习。
文中有一句话我记下来, 算法是很多的,数据结构相对较少,算法都是基于某些数据结构进行操作。所以将数据结构学的通透了,在多做一些题,可能会好一点。
学习数据结构的时候我们都是先学习创建,然后就是遍历。无论什么算法,落到程序实现的时候都是循环和判断。而且大部分都需要遍历。
链表就是从前到后就可以,双向链表,两边可以随便遍历。循环链表,自然需要进行head 、tail 。
树,结构上就是根和叶子。所以就有深度优先,和广度优先。
如果是二叉树,只有左节点,和右节点。所以遍历就有根左右,左右根,先根遍历,和后根遍历。
图就有很多存储了,比如用二位数组。或者哈希表,(图挺多的,我还没研究懂)就会产生很多算法。迷宫问题。你的数据结构不同。实现的时候有一定的不同。
排序:
冒泡排序:模仿水沸腾。n和n+1进行比较,每次把最大的放在最后。改进的双向冒泡,就是把大的放在后面,同时把小的放在前面。
快速排序:是冒泡的改进,思想就是一次遍历,把一个元素,左侧比他小,右侧比他大。然后,左侧的在执行,右侧在执行。
选择排序:就是每次选择一个最大的,放在与第一个交换,然后选择次大的与第二个交换。
归并排序:就是将有序的两个数组,遍历比较,放到第3个数组中。一个遍历完成后,剩下都放进去。 重点,是你要能把原数组的每2个看做一个单独的数组。
再说几个我会的简单算法:
贪心算法。你的数据结构进行排序后,按照一定的价值观,进行取就行。
线性规划。你主要就是把一个大问题,化解成小问题,小问题不断小,在变大,进行求解。