* @date 2017/8/25 * @license MIT * ------------------------------------------------------------- * æè·¯åæï¼å¯¹äºæ°ç»é¿åº¦æ¯è¾å¤§ï¼å ³é®ååå¸åæ¯æ¯è¾ååçæ¥è¯´ï¼æå¼æ¥æ¾çæçæ¯æåæ¥æ¾çæçé« * ------------------------------------------------------------- * 宿¯äºåæ¥æ¾çæ¹è¿ã * å¨è±æè¯å ¸éæ¥æ¾âappleâï¼ä½ 䏿è¯éç¿»å¼è¯å ¸æ¯ç¿»åé¢çä¹¦é¡µè¿æ¯åé¢ç书页å¢ï¼å¦æåæ¥âzooâ,ä½ å伿乿¥ï¼ * æ¾ç¶ä½ ä¸ä¼ä»è¯å ¸ä¸é´å¼å§æ¥èµ·ï¼èæ¯æä¸å®ç®çå°å¾åæå¾åç¿»ã * */ // +-------------------------------------------------------------------------- // | è§£é¢æ¹å¼ | è¿å¿ï¼å¯è½æç¨çè§£å³æ¹æ¡ // +-------------------------------------------------------------------------- /** * insertQuery * * @param array $container * @param $num * @return bool|float|int */ function insertQuery(array $container, $num) { $count = count($container); $lower = 0; $high = $count - 1; while ($lower <= $high) { if ($container[ $lower ] == $num) { return $lower; } if ($container[ $high ] == $num) { return $high; } $left = intval($lower + $num - $container[ $lower ]); $right = ($container[ $high ] - $container[ $lower ]) * ($high - $lower); $middle = $left /$right; if ($num < $container[ $middle ]) { $high = $middle - 1; } else if ($num > $container[ $middle ]) { $lower = $middle + 1; } else { return $middle; } } return false; } // +-------------------------------------------------------------------------- // | æ¹æ¡æµè¯ | php `this.php` || PHPStorm -> å³é® -> Run `this.php` // +-------------------------------------------------------------------------- echo insertQuery([4, 5, 7, 8, 9, 10, 8], 8); // 6