排序:
- 冒泡排序:每次比较相邻两个元素大小,交换,直到末尾,循环执行;稳定
- 选择排序:每次从待排序列中找出最大(最小)元素放在起始位置,循环执行;稳定
- 插入排序:不断将新元素插入到前面已排好序的序列中;稳定,比冒泡和选择更快;适于基本有序集合
- 希尔排序:插入排序的改进,将数据按步长分组,每组进行插入排序,不断缩减步长;不稳定;不适于链式存储结构
- 折半插入排序:插入排序的改进,插入已排好续数组中时采用二分查找;稳定,比直接插入更快
- 堆排序:若升序,则构造大顶堆,然后交换元素,循环执行;不稳定
- 快速排序:选择一个初始数,两个指针从收尾分别出发,找到大于(小于)初始数时做交换,循环执行;不稳定
- 深度优先排序:对每一个分支深入到不能深入为止,且每个结点只访问一次
- 广度优先排序:
查找:
- 二分查找:数据已排好序,存储空间连续,不能频繁插入删除元素(O(logN))
- 二叉搜索树:需要经常插入删除元素(O(h))(h为树高)
- 散列:数据在存放和查找时都经过散列函数处理得到定位(O(N))