<? 
//-------------------- 
// 基本数据结构算法
//-------------------- 
//二分查找(数组里查找某个元素) 
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; 

?>

转载于:https://www.cnblogs.com/ZDPPU/p/5922327.html

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. UI基础篇-iOS中简单图片浏览器的实现
  2. 最高科技——疯狂的前缀和
  3. 50 【Go版本变化】
  4. C# XML反序列化与序列化举例:XmlSerializer(转)
  5. jenkins source files 和 Remove Prefix 用户
  6. 信创产业已成现象级新风口 代码“源头”安全该如何守护?
  7. Android Audio音频通路(七)
  8. 妈耶,摆脱机器音,二次宅的歌姬女友彻底活了
  9. Linux工具参考篇(网摘)
  10. 文章详情页面评论功能添加及实现原理
  11. 年薪60w的程序员与年薪6w的极品程序员,差距怎么这么大呢?
  12. paoding 中文分词学习
  13. oracle 用户创建赋权,oracle 建表空间用户及赋权
  14. ibm cloud怎么使用_使用IBM Cloud中的业务规则服务构建酒店预订应用程序
  15. Formality Error/Debug
  16. java中retry的使用
  17. qcc300x开发调试笔记
  18. 面试笔记:面经-瓜子
  19. 科成计算机系学习部,学习部
  20. element表单校验输入框手动清空时出现XXX is required提示

热门文章

  1. java+random+oracle,oracle随机数 — dbms_random
  2. Linux最全命令详解,请记下来!
  3. 数据库技术基础:数据库管理系统的功能介绍笔记
  4. 收集程序员动图,不幽默我捶自己!
  5. C#实现简体繁体转换代码示例
  6. wpf 如何设置弹出窗口必须关闭才能打开其他软件_5招教你如何清除C盘除系统外的所有垃圾!都学会了吗?...
  7. php获取到的json数据如何处理_php – 如何从API获取JSON数据
  8. nginx windows 下安装和配置
  9. ux设计中的各种地图_如何在UX设计中使用颜色
  10. 魅族魅蓝mirror简单打开usb调试模式的步骤