霜天部落 | 关注LAMP高性能、高并发架构的设计与研究

用PHP实现数据结构中的几个基本算法

当初学习C语言的时候,都用C语言来实现数据结构中的几个算法,现在我们也可以用PHP来实现。

####### 基本的数据结构 ########

//二分查找(数组里查找某个元素)
function bin_sch($array, $low, $high, $k
){
if (
$low <= $high
){
$mid = intval(($low+$high)/2
);
if (
$array[$mid] == $k
){
return
$mid
;
}elseif (
$k < $array[$mid
]){
return
bin_sch($array, $low, $mid1, $k
);
}else{
return
bin_sch($array, $mid+1, $high, $k
);
}
}
return –
1
;
}

//线性表的删除(数组中实现)
function delete_array_element($array, $i
)
{
$len = count($array
);
for (
$j=$i; $j<$len; $j
++){
$array[$j] = $array[$j+1
];
}
array_pop($array
);
return
$array
;
}

//冒泡排序(数组排序)
function bubble_sort($array
)
{
$count = count($array
);
if (
$count <= 0) return false
;

for($i=0; $i<$count; $i++){
for(
$j=$count1; $j>$i; $j
–){
if (
$array[$j] < $array[$j1
]){
$tmp = $array[$j
];
$array[$j] = $array[$j1
];
$array[$j1] = $tmp
;
}
}
}
return
$array
;
}

//快速排序(数组排序)
function quicksort($array
) {
if (
count($array) <= 1) return $array
;

$key = $array[0];
$left_arr
= array();
$right_arr
= array();

for ($i=1; $i<count($array); $i++){
if (
$array[$i] <= $key
)
$left_arr[] = $array[$i
];
else
$right_arr[] = $array[$i
];
}

$left_arr = quicksort($left_arr);
$right_arr = quicksort($right_arr
);

return array_merge($left_arr, array($key), $right_arr);
}

接下来再介绍几个用PHP写的常用函数:

####### 自实现函数 #######

//插入一段字符串
function str_insert($str, $i, $substr
)
{
for(
$j=0; $j<$i; $j
++){
$startstr .= $str[$j
];
}
for (
$j=$i; $j<strlen($str); $j
++){
$laststr .= $str[$j
];
}
$str = ($startstr . $substr . $laststr
);

return $str;
}

//删除一段字符串
function str_delete($str, $i, $j
)
{
for (
$c=0; $c<$i; $c
++){
$startstr .= $str[$c
];
}
for (
$c=($i+$j); $c<strlen($str); $c
++){
$laststr .= $str[$c
];
}
$str = ($startstr . $laststr
);

return $str;
}

//连接字符串
function strcat($s1, $s2
)
{
if (!isset(
$s1) || !isset($s2
)) return;
$newstr = $s1
;
for(
$i=0; $i<count($s); $i
++){
$newstr .= $st[$i
];
}
return
$newsstr
;
}

//简单编码函数(与php_decode函数对应)
function php_encode($str
)
{
if (
$str==&& strlen($str)>128) return false
;

for($i=0; $i<strlen($str); $i++){
$c = ord($str[$i
]);
if (
$c>31 && $c<107) $c += 20
;
if (
$c>106 && $c<127) $c -= 75
;
$word = chr($c
);
$s .= $word
;
}

return $s;
}

//简单解码函数(与php_encode函数对应)
function php_decode($str
)
{
if (
$str==&& strlen($str)>128) return false
;

for($i=0; $i<strlen($str); $i++){
$c = ord($word
);
if (
$c>106 && $c<127) $c = $c20
;
if (
$c>31 && $c<107) $c = $c+75
;
$word = chr($c
);
$s .= $word
;
}

return $s;
}

//简单加密函数(与php_decrypt函数对应)
function php_encrypt($str
)
{
$encrypt_key = ‘abcdefghijklmnopqrstuvwxyz1234567890’
;
$decrypt_key = ‘ngzqtcobmuhelkpdawxfyivrsj2468021359’
;

if (strlen($str) == 0) return false;

for ($i=0; $i<strlen($str); $i++){
for (
$j=0; $j<strlen($encrypt_key); $j
++){
if (
$str[$i] == $encrypt_key[$j
]){
$enstr .= $decrypt_key[$j
];
break;
}
}
}

return $enstr;
}

//简单解密函数(与php_encrypt函数对应)
function php_decrypt($str
)
{
$encrypt_key = ‘abcdefghijklmnopqrstuvwxyz1234567890’
;
$decrypt_key = ‘ngzqtcobmuhelkpdawxfyivrsj2468021359’
;

if (strlen($str) == 0) return false;

for ($i=0; $i<strlen($str); $i++){
for (
$j=0; $j<strlen($decrypt_key); $j
++){
if (
$str[$i] == $decrypt_key[$j
]){
$enstr .= $encrypt_key[$j
];
break;
}
}
}

return $enstr;
}