Home > Backend Development > PHP Tutorial > A collection of basic algorithms for PHP

A collection of basic algorithms for PHP

不言
Release: 2023-03-24 19:00:02
Original
5312 people have browsed it

This article mainly introduces the basic algorithm collection of PHP, which has certain reference value. Now I share it with everyone. Friends in need can refer to it

Binary search (searching for an element in an array)

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;   
}
Copy after login


This method is for index arrays and the value is sorted from small to large
Associative arrays are not applicable, the array sorting method is inconsistent or there is no sorting, please modify the if condition accordingly to increase the sorting Wait

Sequential search (search for an element in the array)

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;   
    }   
}   

此方法适用于索引数组并且$n = count($array);
Copy after login

Simplified enhanced version

function  seq_sch($array, $k){   
    $y = $m = &#39;no&#39;; 
    foreach($array as $i => $v){
        if($v == $k){  
            if($i == &#39;no&#39;){$m = &#39;yes&#39;}//防止key = no
            $y = $i; 
            break;   
        }   
    }   
    if ($y != &#39;no&#39; || $m == &#39;yes&#39;){   
        return  $y;   
    }else{   
        return -1;   
    }   
}   

此方法适用于所有一维数组
Copy after login

Deletion of linear tables (implemented in the array)

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 ;  
}
Copy after login

$i specifies the deletion parameter position

Bubble sort (array sort)

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;  
 }
Copy after login

Quick sort (array sort)

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);  
}
Copy after login

String length

function strlen ($str){  
    if ($str == &#39;&#39; ) return 0;  
    $count =  0;  
    while (1){  
        if ($str[$count] != NULL){  
            $count++;  
            continue;  
        }else{  
            break;  
        }  
    }  
    return $count;  
}
Copy after login
  • while (1) 1 represents a constant expression, which will never equal 0. Therefore, the loop will continue to execute. Unless you set a break or similar statement to jump out of the loop, the loop will terminate.

  • $str[count] PHP is a weakly typed language. You can use subscripts to read the corresponding parameters at the corresponding position

Intercept substring

function substr($str, $start,  $length=NULL){  
    if ($str== &#39;&#39; || $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;
Copy after login

}

String flip

function strrev($str){  
    if ($str == &#39;&#39;) return 0 ;  
    for ($i=(strlen($str)- 1); $i>=0; $i --){  
            $rev_str .= $str[$i ];  
    }  
    return $rev_str;  
}
Copy after login

String comparison

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;  
}
Copy after login

Find string

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 ;  
}
Copy after login

strcmp(

substr) String comparison method If you don’t want to use the comparison method, please add a for loop


String replacement

function str_replace($substr, $newsubstr, $str){  
    $m = strlen($str);  
    $n = strlen($substr);  
    $x = strlen($newsubstr);  
    if (strchr($str, $substr) == false) return false;
    $str_new = $str  
    for ($i=0; $i<=($m-$n+1); $i++){  
        $i = strchr($str, $substr);  
        $str = str_delete($str_new, $i, $n);  
        $str = str_insert($str_new, $i, $newstr);  
    }  
    return $str_new;  
}
Copy after login
  • strchr() function searches for the first occurrence of a string in another string.
    This function is an alias of the strstr() function.

Insert a string

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 ;  
}
Copy after login

Delete a string

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;  
}
Copy after login

Copy string

function strcpy($s1, $s2){  
    if (strlen($s1)==NULL || !isset($s2)) return;  
    for ($i=0; $i<strlen($s1); $i++){  
        $s2[] = $s1[$i];  
    }  
    return $s2;  
}
Copy after login

Connect string

function strcat($s1 ,$s2){  
    if (!isset($s1) || !isset( $s2)) return;  
    $newstr = $s1 ;  
    for($i=0; $i<strlen($s2); $i++){  
            $newstr .= $s2[$i];  
    }  
    return $newstr;  
}
Copy after login

             



The above is the detailed content of A collection of basic algorithms for PHP. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template