数据结构与算法之排序和查找
排序算法
选择排序 Selection Sort
一次选择排序,可以将某个区间的最小值排列到该区域的第一位,具体过程是:
冒泡排序 Bubble Sort
一次冒泡排序,可以将某个区域序列的最大值排序到该区域的最后一位,具体过程是:
快速排序 Quick Sort
选择一个数(比如序列的最后一位)作为基准数,将整个序列排序成两部分,一部分比该数小,另一部分比该数大,基准数在中间,然后对剩余的序列做同样的事情,直到排序完成
查询算法
顺序查找 Inorder Search
即普通的遍历,属于算法的穷举法,没啥好解释的
二分查找 Binary Search
如果一个序列是一个排序好的序列,则使用二分查找可以极大的缩短查找时间
具体的做法是:
查找该序列中间未知的数据
1) 相等,找到
2) 要找的数据较大,则对后续部分的数据做同样的步骤
3) 要找的数据较小,则对前面部分的数据做同样的步骤插值查找 Interpolation Search
插值查找是对二分查找的进一步改进
如果序列不仅是一个排序好的序列,而且序列的步长大致相同,使用插值查找会更快的找到目标。
插值查找基于如下假设:下标之间的距离比和数据之间的距离比大致相同
于是有
1
(target - a) / (g - a) ≈ (mid - minIndex) / (maxIndex - minIndex)
从而有
1
mid ≈ (target - a) / (g - a) * (maxIndex - minIndex) + minIndex
注意:部分文章可能会在不就的将来更新
如果能够帮助到你,是小编最大的荣幸
当然 有 不好的地方 请大家帮忙指出 学习永无止境
小编一直认为 人外有人 天外有天 一起学习 共同进步
让我们共同加油吧!!!
原文作者: Yunjie Ge
原文链接: http://www.blog.geyunjie.com/2020/07/25/sjjgysf-sort/
版权声明: 转载请注明出处(必须保留作者署名及链接)