算法的介绍
数据结构中的算法,指的是数据结构所具备的功能。 解决特点问题的方法,是前辈的一些优秀经验总结。
查找
顺序查找:从头到位逐一比较,对于要查找的数据没有要求,但方法简单在小规模的查找中比较常用,但效率低。
二分查找:前提是数据必须有序,然后从数据的中间位置开始查起,如果中间值比key小,则从中间值位置开始继续查找,反之刚从开头到中位置查找,重复以上过程直到结束从代码实现上来说,既可以用循环实现,也可以用递归实现。
块查找,权重查找适用于特殊条件下,需要对数据进行排序、分析、总结、归纳。
时间复杂度
冒泡排序:O(N),O(N^2)
插入排序:O(N),O(N^2)
选择排序:O(N^2)
快速排序:O(nlog2n),O(N^2)
堆排序:O(nlog2n)
归并排序:O(nlog2n)
排序
排序算法的稳定性:当序列中有相等的数据时,算法会不会改变这两个数据的前后位置。
冒泡排序:是一种稳定排序,在排序过程中可以监测到数据是否已经有序(对数据的有序性敏感),可以立即停止,如果待排序的数据基本有序,则冒泡的效率非常高。
插入排序:当一列数已经有序,在有新加入的数据时,适合使用插入排序。
选择排序:是冒泡排序的一种变种,但是它没有冒泡对数据的有序性的敏感,但它在排序过程中比冒泡要少了很多数据交换,因此要比冒泡快(数据比较混乱的情况下)。
快速排序:一种基于交换的排序。
堆排序:首先把数据当做完全二叉树,然后保证根结点最大,然后把根结点与最后一个元素交换,然后在调整二叉树(逐渐减小数组),让根依然保持最大,重复上一个操作。
归并排序:不交换数据,但需要借助额外的空间,用作临时的存储空间。