<?php
function
bubbleSort(&
$arr
){
$temp
=0;
$flag
=false;
for
(
$i
=0;
$i
<
count
(
$arr
)-1;
$i
++){
for
(
$j
=0;
$j
<
count
(
$arr
)-1-
$i
;
$j
++){
if
(
$arr
[
$j
]>
$arr
[
$j
+1]){
$temp
=
$arr
[
$j
];
$arr
[
$j
]=
$arr
[
$j
+1];
$arr
[
$j
+1]=
$temp
;
$flag
=true;
}
}
if
(!
$flag
){
break
;
}
$flag
=false;
}
}
function
selectSort(&
$arr
){
$temp
=0;
for
(
$i
=0;
$i
<
count
(
$arr
)-1;
$i
++){
$minVal
=
$arr
[
$i
];
$minIndex
=
$i
;
for
(
$j
=
$i
+1;
$j
<
count
(
$arr
);
$j
++){
if
(
$minVal
>
$arr
[
$j
]){
$minVal
=
$arr
[
$j
];
$minIndex
=
$j
;
}
}
$temp
=
$arr
[
$i
];
$arr
[
$i
]=
$arr
[
$minIndex
];
$arr
[
$minIndex
]=
$temp
;
}
}
function
insertSort(&
$arr
){
for
(
$i
=1;
$i
<
count
(
$arr
);
$i
++){
$insertVal
=
$arr
[
$i
];
$inserIndex
=
$i
-1;
while
(
$inserIndex
>= 0 &&
$insertVal
<
$arr
[
$inserIndex
]){
$arr
[
$inserIndex
+1] =
$arr
[
$inserIndex
];
$inserIndex
--;
}
$arr
[
$inserIndex
+1] =
$insertVal
;
}
}
function
quickSort(
$left
,
$right
,&
$arr
){
$l
=
$left
;
$r
=
$right
;
$pivot
=
$arr
[(
$left
+
$right
)/2];
while
(
$l
<
$r
){
while
(
$arr
[
$l
]<
$pivot
){
$l
++;
}
while
(
$arr
[
$r
]>
$pivot
){
$r
--;
}
if
(
$l
>=
$r
){
break
;
}
$temp
=
$arr
[
$l
];
$arr
[
$l
]=
$arr
[
$r
];
$arr
[
$r
]=
$temp
;
if
(
$arr
[
$l
]==
$pivot
){
--
$r
;
}
if
(
$arr
[
$r
]==
$pivot
){
++
$l
;
}
}
if
(
$l
==
$r
){
$l
++;
$r
--;
}
if
(
$left
<
$r
) quickSort(
$left
,
$r
,
$arr
);
if
(
$right
>
$l
) quickSort(
$l
,
$right
,
$arr
);
}
function
quickSort2(
$arr
,
$order
=
'asc'
)
{
if
(
count
(
$arr
) <= 1)
return
$arr
;
$arr_left
=
$arr_right
=
array
();
$val
=
$arr
[0];unset(
$arr
[0]);
foreach
(
$arr
as
$v
) {
if
(
strtolower
(
$order
) ==
'desc'
){
if
(
$v
<
$val
)
$arr_right
[] =
$v
;
else
$arr_left
[] =
$v
;
}
else
{
if
(
$v
>
$val
)
$arr_right
[] =
$v
;
else
$arr_left
[] =
$v
;
}
}
$arr_left
= quickSort(
$arr_left
,
$order
);
$arr_right
= quickSort(
$arr_right
,
$order
);
return
array_merge
(
$arr_left
,
array
(
$val
),
$arr_right
);
}
$arr
=
array
(46,90,900,0,-1);
function
search(&
$arr
,
$findVal
){
$flag
=false;
for
(
$i
=0;
$i
<
count
(
$arr
);
$i
++){
if
(
$findVal
==
$arr
[
$i
]){
echo
"找到了,下标为=$i"
;
$flag
=true;
}
}
if
(!
$flag
){
echo
"查无此数"
;
}
}
$arr
=
array
(0,90,900,99990);
binarySwarch(
$arr
,90,0,
count
(
$arr
)-1);
function
binarySearch(&
$arr
,
$findVal
,
$leftIndex
,
$rightIndex
){
if
(
$rightIndex
<
$leftIndex
){
echo
"找不到该数"
;
return
;
}
$middleIndex
=
round
((
$rightIndex
+
$leftIndex
)/2);
if
(
$findVal
>
$arr
[
$middleIndex
]){
binarySearch(
$arr
,
$findVal
,
$middleIndex
+1,
$rightIndex
);
}
else
if
(
$findVal
<
$arr
[
$middleIndex
]){
binarySearch(
$arr
,
$findVal
,
$leftIndex
,
$middleIndex
-1);
}
else
{
echo
"找到这个数。下标是$middleIndex"
;
}
}
?>