搜索、排序算法及复杂度分析
1. 二分查找算法
1.1 二分查找方法实现
二分查找方法 binarySearch 接收待搜索的数组 data 和搜索键 key 作为参数。在方法开始时,计算当前搜索数组部分的低端索引、高端索引和中间索引,初始时低端为 0,高端为数组长度减 1,中间为这两个值的平均值。将元素位置初始化为 -1,如果未找到键,将返回该值。循环直到低端大于高端(表示未找到键)或位置不等于 -1(表示找到键)。每次循环测试中间元素的值是否等于键,如果相等,将中间值赋给位置,循环终止并返回位置给调用者。若值不相等,则排除数组中剩余值的一半。
1.2 二分查找效率分析
在最坏情况下,使用二分查找搜索一个包含 1023 个元素的有序数组仅需 10 次比较。不断将 1023 除以 2 并向下取整,可得到一系列值,直到为 0,表示没有更多元素可测试。二分查找中除以 2 相当于一次比较。因此,一个包含 1,048,575 个元素的数组最多需要 20 次比较来找到键,而一个包含超过 10 亿个元素的数组最多需要 30 次比较。这比线性搜索的性能有了巨大提升。对于一个 10 亿元素的数组,线性搜索平均需要 5 亿次比较,而二分查找最多只需 30 次比较。二分查找任何有序数组所需的最大比较次数是大于数组元素数量的 2 的第一次幂的指数,用大 O 表示法为 O(log n),也称为对数运行时间。
2. 排序算法概述
排序数据是将数据按特定顺序(如升序或降序)排列,是最重要的计算应用之一。银行按账号对所有支票进行排序,以便在每个月底准
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



