描述:
function insertSort($arr){ if(!is_array($arr)) return false; //外层循环插入次数 for($i=1;$i $tmp = $arr[$i];//要插入的元素 //内层循环比较和插入 for($j=$i-1;$j>=0;$j--){ //发现要插入的元素小 if($tmp < $arr[$j]){ //将后边的元素和前面的元素交换 $arr[$j+1]=$arr[$j]; //把前面的数设置为当前需要交换的数 $arr[$j] = $tmp; } } } return $arr; }
描述:
/** * 非递归版 二分查找 * * @param array $container * @param $search * @return int|string */ function BinaryQuery(array $container, $search) { $top = count($container); $low = 0; while ($low <= $top) { $mid = intval(floor(($low + $top) / 2)); if (!isset($container[$mid])) { return '没找着哦'; } if ($container[$mid] == $search) { return $mid; } $container[$mid] < $search && $low = $mid + 1; $container[$mid] > $search && $top = $mid - 1; } } /** * 递归版 二分查找 * * @param array $container * @param $search * @param int $low * @param string $top * @return int|string */ function BinaryQueryRecursive(array $container, $search, $low = 0, $top = 'default') { $top == 'default' && $top = count($container); if ($low <= $top) { $mid = intval(floor($low + $top) / 2); if (!isset($container[$mid])) { return '没找着哦'; } if ($container[$mid] == $search) { return $mid; } if ($container[$mid] < $search) { return BinaryQueryRecursive($container, $search, $mid + 1, $top); } else { return BinaryQueryRecursive($container, $search, $low, $mid - 1); } } }