php常用算法

<?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,$mid-1,$k);
}else{
return bin_sch($array,$mid+1,$high,$k);
}
}
return -1;
}
/*$array=['1','2','3','4','5','6','7','8','9','10',];
$k='ijki';
$bin_ch=bin_sch($array,0,10,$k);
var_dump($bin_ch);
*/




//顺序查找(数组里查找摸个元素)
function seq_sch($array,$n,$k){
$array[$n] = $k;
for($i=0;$i<$n;$i++){
if($array[$i]==$k){
break;
}
}
if($i<$n){
return $i;
}else{
return -1;
}
}
/*$count_array=count($array);
var_dump($count_array);
$seq_sch=seq_sch($array,$count_array,'ijki');
var_dump($seq_sch);*/


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


//冒泡排序(数组排序)
function bubble_sort($array){
$count = count($array);
if($count<=0) return false;
for($i=0;$i<$count;$i++){
for($j=$count-1;$j>$i;$j--){
if($array[$j]<$array[$j-1]){
$tmp = $array[$j];
$array[$j] = $array[$j-1];
$array[$j-1] = $tmp;
}
}
}
return $array;
}
/*$array=['a','b','g','n','m','f','k','z','w'];
$bubble_sort = bubble_sort($array);
var_dump($bubble_sort);
*/


//快速排序
function quick_sort($array){
if(count($array)<=1)return $array;
$key = $array[0];
//var_dump($key);
$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 = quick_sort($left_arr);
$right_arr = quick_sort($right_arr);
return array_merge($left_arr,array($key),$right_arr);
}
/*$array=['5','6','7','8','9','0','1','2','3','4',];
$quick=quick_sort($array);
var_dump($quick);
*/


//简单编码函数(与php_decode函数对应)
function php_encode($str){
if($str==''&& strlen($str)>128)return false;
$s='';
for($i=0;$i<strlen($str);$i++){
$c=ord($str[$i]);//转换成对应的ascll码
if($c>106&&$c<127)$c-=75;
$word=chr($c);//ascll码对应的字符
$s.=$word;
}
return $s;
}
function php_decode($str){
if($str==''&& strlen($str)>128)return false;
$s='';
for($i=0;$i<strlen($str);$i++){
$c=ord($str[$i]);//转换成对应的ascll码
if($c>31&&$c<52)$c=$c+75;//顺序必须相反,可能二次加密
$word=chr($c);//ascll码对应的字符
$s.=$word;
echo $word;
}
return $s;
}
$a='abcdefghijklmnopqistuvwxyz';
/*for($i=0;$i<26;$i++){
echo $a[$i];
}
*/
var_dump($a);
$a_encode=php_encode($a);
var_dump($a_encode);
$a_decode=php_decode($a_encode);
var_dump($a_decode);
?>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jony0303

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值