Maison développement back-end tutoriel php 基本数据结构算法_PHP教程

基本数据结构算法_PHP教程

Jul 13, 2016 am 10:52 AM
元素 基本 数据结构 数组 查找 算法


//--------------------
// 基本数据结构算法
//--------------------

//二分查找(数组里查找某个元素)
function bin_sch($array, $low, $high, $k){  
    if ($low         $mid = intval(($low+$high)/2);  
        if ($array[$mid] == $k){  
            return $mid;  
        }elseif ($k             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         if($array[$i]==$k){  
            break;  
        }  
    }  
    if ($i         return $i;  
    }else{  
        return -1;  
    }  
}  

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

//冒泡排序(数组排序)
function bubble_sort($array)
{
        $count = count($array);
        if ($count
        for($i=0; $i                 for($j=$count-1; $j>$i; $j--){
                        if ($array[$j]                                 $tmp = $array[$j];
                                $array[$j] = $array[$j-1];
                                $array[$j-1] = $tmp;
                        }
                }
        }
        return $array;
}

//快速排序(数组排序)
function quick_sort($array) {
        if (count($array)
        $key = $array[0];
        $left_arr = array();
        $right_arr = array();

        for ($i=1; $i                 if ($array[$i]                         $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) && ($startstrlen($str)+$start)) return;
        if ($length == NULL) $length = (strlen($str) - $start);
         
        if ($start                 for ($i=(strlen($str)+$start); $i                         $substr .= $str[$i];
                }
        }

        if ($length > 0){
                for ($i=$start; $i                         $substr .= $str[$i];
                }
        }

        if ($length                 for ($i=$start; $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)         if (strlen($s1) > strlen($s2)) return 1;

        for ($i=0; $i                 if ($s1[$i] == $s2[$i]){
                        continue;
                }else{
                        return false;
                }
        }
        return 0;
}


//查找字符串
function strstr($str, $substr)
{
        $m = strlen($str);
        $n = strlen($substr);
        if ($m
        for ($i=0; $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                 $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                 $startstr .= $str[$j];
        }
        for ($j=$i; $j                 $laststr .= $str[$j];
        }
        $str = ($startstr . $substr . $laststr);

        return $str;
}

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

        return $str;
}

//复制字符串
function strcpy($s1, $s2)
{
        if (strlen($s1)==NULL || !isset($s2)) return;

        for ($i=0; $i                 $s2[] = $s1[$i];
        }
        return $s2;
}

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

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

        for($i=0; $i                 $c = ord($str[$i]);
                if ($c>31 && $c                 if ($c>106 && $c                 $word = chr($c);
                $s .= $word;
        }  

        return $s;  
}

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

        for($i=0; $i                 $c = ord($word);
                if ($c>106 && $c                 if ($c>31 && $c                 $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                 for ($j=0; $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                 for ($j=0; $j                         if ($str[$i] == $decrypt_key[$j]){
                                $enstr .= $encrypt_key[$j];
                                break;
                        }
                }
        }

        return $enstr;
}

?>

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/632482.htmlTechArticle? //-------------------- // 基本数据结构算法 //-------------------- //二分查找(数组里查找某个元素) function bin_sch($array, $low, $high, $k){ if ($low = $h...
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Article chaud

Musée de deux points: Guide de localisation de Bungle Wasteland
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Article chaud

Musée de deux points: Guide de localisation de Bungle Wasteland
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Implémentation d'algorithmes d'apprentissage automatique en C++ : défis et solutions courants Implémentation d'algorithmes d'apprentissage automatique en C++ : défis et solutions courants Jun 03, 2024 pm 01:25 PM

Implémentation d'algorithmes d'apprentissage automatique en C++ : défis et solutions courants

Algorithme de détection amélioré : pour la détection de cibles dans des images de télédétection optique haute résolution Algorithme de détection amélioré : pour la détection de cibles dans des images de télédétection optique haute résolution Jun 06, 2024 pm 12:33 PM

Algorithme de détection amélioré : pour la détection de cibles dans des images de télédétection optique haute résolution

Inversion des valeurs clés du tableau PHP : analyse comparative des performances de différentes méthodes Inversion des valeurs clés du tableau PHP : analyse comparative des performances de différentes méthodes May 03, 2024 pm 09:03 PM

Inversion des valeurs clés du tableau PHP : analyse comparative des performances de différentes méthodes

Application de la fonction de regroupement de tableaux PHP dans le tri des données Application de la fonction de regroupement de tableaux PHP dans le tri des données May 04, 2024 pm 01:03 PM

Application de la fonction de regroupement de tableaux PHP dans le tri des données

Application d'algorithmes dans la construction de 58 plateformes de portraits Application d'algorithmes dans la construction de 58 plateformes de portraits May 09, 2024 am 09:01 AM

Application d'algorithmes dans la construction de 58 plateformes de portraits

Le rôle de la fonction de regroupement de tableaux PHP dans la recherche d'éléments en double Le rôle de la fonction de regroupement de tableaux PHP dans la recherche d'éléments en double May 05, 2024 am 09:21 AM

Le rôle de la fonction de regroupement de tableaux PHP dans la recherche d'éléments en double

Structures de données et algorithmes Java : explication détaillée Structures de données et algorithmes Java : explication détaillée May 08, 2024 pm 10:12 PM

Structures de données et algorithmes Java : explication détaillée

L'algorithme CVM révolutionnaire résout plus de 40 ans de problèmes de comptage ! Un informaticien lance une pièce de monnaie pour trouver le mot unique pour « Hamlet » L'algorithme CVM révolutionnaire résout plus de 40 ans de problèmes de comptage ! Un informaticien lance une pièce de monnaie pour trouver le mot unique pour « Hamlet » Jun 07, 2024 pm 03:44 PM

L'algorithme CVM révolutionnaire résout plus de 40 ans de problèmes de comptage ! Un informaticien lance une pièce de monnaie pour trouver le mot unique pour « Hamlet »

See all articles