数据|数据结构
【基本算法】
假设有一个数组,需要找出某个值在该数组中的位置。
//二分查找
function bin_sch($array, $low, $high, $k){
if ($low $mid = intval(($low+$high)/2);
if ($array[$mid] == $k){
return $mid;
}elseif ($k return bin_sch($array, $low, $mid-1, $k);
}else{
return bin_sch($array, $mid+1, $high, $k);
}
}
return -1;
}
//顺序查找
function seq_sch($array, $n, $k){
$array[$n] = $k;
for($i=0; $i if($array[$i]==$k){
break;
}
}
if ($i return $i;
}else{
return -1;
}
}
?>
测试代码:
array.txt 文件里面包含了一百万条类似 2,3,4,5 这样的数据,下面通过顺序查找和二分查找来确定速度。
//二分查找
set_time_limit(0);
$array = array();
$file = file_get_contents("./array.txt");
$array = explode(",", $file);
sort($array);
$st = time();
$k = 43;
$n = count($array);
$r = bin_sch($array, 0, $n-1, $k);
$et = time();
$t = $et-$st;
echo "Process time: ". $t ."/s";
?>
以上输出: Process time: 0/s
//顺序查找
set_time_limit(0);
$array = array();
$file = file_get_contents("./array.txt");
$array = explode(",", $file);
$st = time();
$k = 43;
$n = count($array);
$r = seq_sch($array, $n, $k);
$et = time();
$t = $et-$st;
echo "Process time: ". $t ."/s";
?>
以上输出结果:Process time: 9/s
上面轻易就能够看出谁的效率高了。
【算法改进】
//二分查找(递归消除)
function bin_sch($array, $n, $k){
$low = 0;
$high = $n-1;
while($low $mid = intval(($high-$low)/2);
if ($array[$mid] == $k)
return $mid;
elseif ($k $high = $mid - 1;
}else{
$low = $mid + 1;
}
}
return -1;
}
//顺序查找(改进版)
function seq_sch($array, $n, $k){
$array[$n] = $k;
for($i=0; ; $i++){
if($array[$i]==$k){
break;
}
}
if ($i return $i;
}else{
return -1;
}
}
?>
能看出上面两个函数做了什么改变吗?效率提升了多少?

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

뜨거운 주제



