<?  
//--------------------  
// 基本数据结构算法 
//--------------------  
//二分查找(数组里查找某个元素)  
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;   
}   
//顺序查找(数组里查找某个元素)  
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;   
    }   
}   
//线性表的删除(数组中实现)  
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=$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;  
}  
//快速排序(数组排序)  
function quick_sort($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 = quick_sort($left_arr );  
        $right_arr = quick_sort( $right_arr);  
        return array_merge($left_arr , array($key), $right_arr);  
}

//------------------------  
// PHP内置字符串函数实现  
//------------------------  
//字符串长度  
function strlen ($str)  
{  
        if ($str == '' ) return 0;  
        $count =  0;  
        while (1){  
                if ( $str[$count] != NULL){  
                         $count++;  
                        continue;  
                }else{  
                        break;  
                }  
        }  
        return $count;  
}  
//截取子串  
function substr($str, $start,  $length=NULL)  
{  
        if ($str== '' || $start>strlen($str )) return;  
        if (($length!=NULL) && ( $start>0) && ($length> strlen($str)-$start)) return;  
        if (( $length!=NULL) && ($start< 0) && ($length>strlen($str )+$start)) return;  
        if ($length ==  NULL) $length = (strlen($str ) - $start);  
          
        if ($start <  0){  
                for ($i=(strlen( $str)+$start); $i<(strlen ($str)+$start+$length ); $i++) {  
                        $substr .=  $str[$i];  
                }  
        }  
        if ($length  > 0){  
                for ($i= $start; $i<($start+$length ); $i++) {  
                        $substr  .= $str[$i];  
                }  
        }  
        if ( $length < 0){  
                for ($i =$start; $i<(strlen( $str)+$length); $i++) {  
                        $substr .= $str[$i ];  
                }  
        }  
        return $substr;  
}  
//字符串翻转  
function strrev($str)  
{  
        if ($str == '') return 0 ;  
        for ($i=(strlen($str)- 1); $i>=0; $i --){  
                $rev_str .= $str[$i ];  
        }  
        return $rev_str;  
}

//字符串比较  
function strcmp($s1,  $s2)  
{  
        if (strlen($s1) <  strlen($s2)) return -1 ;  
        if (strlen($s1) > strlen( $s2)) return 1;  
        for ($i =0; $i<strlen($s1 ); $i++){  
                if ($s1[ $i] == $s2[$i]){  
                        continue;  
                }else{  
                        return false;  
                }  
        }  
        return  0;  
}

//查找字符串  
function  strstr($str, $substr)  
{  
         $m = strlen($str);  
        $n = strlen($substr );  
        if ($m < $n) return false ;  
        for ($i=0; $i <=($m-$n+1); $i ++){  
                $sub = substr( $str, $i, $n);  
                if ( strcmp($sub, $substr) ==  0)  return $i;  
        }  
        return false ;  
}  
//字符串替换  
function str_replace($substr , $newsubstr, $str)  
{  
         $m = strlen($str);  
        $n = strlen($substr );  
        $x = strlen($newsubstr );  
        if (strchr($str, $substr ) == false) return false;  
        for ( $i=0; $i<=($m- $n+1); $i++){  
                 $i = strchr($str,  $substr);  
                $str = str_delete ($str, $i, $n);  
                $str = str_insert($str,  $i, $newstr);  
        }  
        return $str ;  
}

//--------------------  
// 自实现字符串处理函数 
//--------------------  
//插入一段字符串  
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 strcpy($s1, $s2 )  
{  
        if (strlen($s1)==NULL || !isset( $s2)) return;  
        for ($i=0 ; $i<strlen($s1);  $i++){  
                $s2[] = $s1 [$i];  
        }  
        return $s2;  
}  
//连接字符串  
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 = $c-20;  
                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;  
}

?>

php 各种经典算法相关推荐

  1. 数据挖掘的一些经典算法

    数据挖掘能做以下七种不同事情 (分析方法): 数据挖掘能做以下七种不同事情 · 分类 (Classification) · 估计(Estimation) · 预测(Prediction) · 相关性分 ...

  2. 经典算法研究系列:二、Dijkstra 算法初探

    经典算法研究系列:二.Dijkstra 算法初探  July   二零一一年一月 ====================== 本文主要参考:算法导论 第二版.维基百科. 写的不好之处,还望见谅. 本 ...

  3. 经典算法书籍推荐以及算法书排行【算法四库全书】

    经典算法书籍推荐以及算法书排行[算法四库全书] 作者:霞落满天   https://linuxstyle.blog.csdn.net/    https://blog.csdn.net/21aspne ...

  4. 经典算法题每日演练——第六题 协同推荐SlopeOne 算法

    原文:经典算法题每日演练--第六题 协同推荐SlopeOne 算法 相信大家对如下的Category都很熟悉,很多网站都有类似如下的功能,"商品推荐","猜你喜欢&quo ...

  5. 白话经典算法系列之七 堆与堆排序

     堆排序与高速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法.学习堆排序前,先解说下什么是数据结构中的二叉堆. 二叉堆的定义 二叉堆是全然二叉树或者是近似全然二叉树. 二叉堆满 ...

  6. 免费技术直播:唐宇迪带你一节课了解机器学习经典算法

    常常有小伙伴在后台反馈:机器学习经典算法有哪些? 自学难度大又没有效果,该怎么办? CSDN为了解决这个难题,联合唐宇迪老师为大家带来了一场精彩的直播[一节课掌握机器学习经典算法-线性回归模型].本次 ...

  7. 一文了解迁移学习经典算法

    来源 | linolzhang的CSDN博客 作者 | linolzhang ▌一. 了解迁移学习 迁移学习(Transfer Learning)目标是将从一个环境中学到的知识用来帮助新环境中的学习任 ...

  8. 调包侠福音!机器学习经典算法开源教程(附参数详解及代码实现)

    Datawhale 作者:赵楠.杨开漠.谢文昕.张雨 寄语:本文针对5大机器学习经典算法,梳理了其模型.策略和求解等方面的内容,同时给出了其对应sklearn的参数详解和代码实现,帮助学习者入门和巩固 ...

  9. 密码学中经典算法及应用

    一.加密算法理论基础 1.1 背景 密码学相关安全技术在整个信息技术领域的重要地位无需多言.如果没有现代密码学和信息安全的研究成果,人类社会根本无法进入信息时代. 实际上,密码学和安全领域所涉及的知识 ...

  10. PMVS:多视图匹配经典算法

    导语:Multi-View Stereo(MVS)多视图立体匹配与三维重建的任务是:以已知内外参数的多幅图像(SfM的结果)为输入,重建出真实世界中物体/场景的三维模型. 本文作者提出了PMVS的经典 ...

最新文章

  1. 如何使用echo.js实现图片的懒加载(整理)
  2. Linux 下 Jni 实现
  3. 较高人工智能的人机博弈程序实现(多个算法结合)含C++源码
  4. 如何查看windows版本号?
  5. java.lang.ClassNotFoundException: org.springframework.web.util.IntrospectorCleanupListener
  6. LwIP之网络接口管理
  7. python调试神器_你必须拥有的Python调试神器
  8. 深入比特币原理(三)——交易的输入(input)与输出(output)
  9. error: #5: cannot open source input file “stm32f10x_lib.h“:
  10. 哔哩哔哩---P2 WPF基础入门视频(布局)
  11. 遥感基础——红外波段分类
  12. matlab中二维插值中cubic方法的实现原理(个人见解)
  13. 【备忘】Oracle商业智能BI产品OBIEE11G深入浅出全套视频教程
  14. Python编程PTA题解——换硬币
  15. 一文读懂开源项目 OpenHarmony2.0 开源项目 OpenHarmony 是什么
  16. 10个人用的云服务器要什么配置文件,10个人用的云服务器要什么配置文件
  17. 《数据结构》:中缀表达式合法性判断
  18. 用UDP实现简易的聊天室
  19. python直方图上加正态分布线_Python直方图绘制(与标准正态分布进行比较)
  20. 画图用计算机显卡,1分钟看懂显卡显卡绘图原理!

热门文章

  1. 实现JSON在线美化(格式化)、JSON转CSV、CSV转XML工具-toolfk程序员工具网
  2. 如何在网页中加入图片
  3. 0204隐函数及由参数方程所确定的函数的导数相关变化率-导数与微分
  4. 大数据就业前景及职能定位解析!
  5. VBA案例8:实现在ppt中写vba,控制动态图
  6. 7-2 531 字符串_小写变大写
  7. 图案设计灵感怎么写_妆容设计灵感怎么写
  8. 微信小程序码中间Logo修改
  9. 10.23训练赛补题
  10. ArcGIS ArcMap “ Add Data” 打开后,一直卡死,无内容