先理解一下数组和链表
数组与链表都存储在内存空间
数组需要一个连续的且能装下所有元素的空间
当数组元素增加时,需要考虑所在空间的的前后是否还有空间可以放下新加入的元素
当然,在现在内存空间足够的情况下,大可不必考虑这些问题��,不过在嵌入式系统中依然需要注意内存的使用
链表不太矫情,不需要所有的元素都抱在一起,只要告诉他前一个和后一个元素在哪就行,他就可以安心的独处了
不过要每一个元素都知道他前一个或后一个在哪是需要付出代价的,也就是额外的存储空间
链表的优势是可以插入元素而不影响太多其他元素,这正好是数组的劣势
数组的优势是可以随机访问任何一个元素,而链表只能从第一个(先不说双向链表)开始,一个一个一个的访问,直到找到所要访问的元素
二分查找的前提
元素有序排列
如何使元素有序排列呢
假如你有一个数组或者链表
其中的元素并没有按从大到小或从小到大的顺序排列
你可以先遍历一遍这个队列,找出最大的放入新队列的第一个位置
再遍历一遍,再找出最大的放入新队列的第二个位置
。。。
直到所有元素全部放入新队列
排序完成,获得一个从大到小排列的队列
这就是选择排序,选择出元素重新排列
算法很简单,复习一下