算法导论(第三版)第二章2.3-7 描述一个运行时间为θ(nlgn)的算法......

算法导论(第三版)第二章2.3-7 题干:描述一个运行时间为θ(nlgn)的算法 给定n个整数的集合S和另一个整数X,该算法能确定S中是否存在两个其和刚好为x的元素.// 设置两种下标// 第一个下标的取值 从数组的第一个 到数组的倒数第二个 作为外层循环// 第二个小标 根据二分法取值 从比第1个下标大1位的位置 到数组最后一个位置 作为内层循环内层循环中:假如所有元素除去第一...
摘要由CSDN通过智能技术生成
算法导论(第三版)第二章2.3-7 
题干:
描述一个运行时间为θ(nlgn)的算法 给定n个整数的集合S和另一个整数X,该算法能确定S中是否存在两个其和刚好为x的元素.

// 设置两种下标
// 第一个下标的取值 从数组的第一个 到数组的倒数第二个 作为外层循环
// 第二个小标 根据二分法取值 从比第1个下标大1位的位置 到数组最后一个位置 作为内层循环
内层循环中:
假如所有元素除去第一个元素取值过的元素 剩余元素个数记为search_length; 
取search_length中间数; 
如果中间的元素与第一个下标所表示的元素相等 直接返回结果存在;结束所有循环;
如果中间的元素与第一个下标所表示的元素不相等,就根据偏大或偏小,往左/右移动一半的search_length; 
search_length每次被用于移动后减半; 
如此一直循环搜索到剩余元素仅1个,移位后依然不能使元素和为x时,就结束内层循环,进一步外层下标继续开始新一轮内层循环;



function sortAction($param)
{
    $x = fetch($param, 0, 12);
    $S = [0, 0, 0, 0, 0, 6, 7, 8, 9, 10];
    $length = count($S);
    $result = '';
    // $i从数组的序号0到数组的倒数第二个序号 即数组元素个数-2
    for ($i = 0; $i < ($length - 1); $i++) {
        // $j的取值 剩余未排序数组的第search_length个
        // search_lenth 剩余未被i取值的元素个数 每次计算后等于自身除以二 向上取整
        $search_length = ceil(($length - ($i + 1)) / 2);
        $j = $i + $search_length;
        while (true) {
            if ($j <= $
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值