Binary search (find 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;
}
This method sorts the index array and the value is from small to large. The
associative array is not applicable, the array sorting method is inconsistent or there is no sorting, please modify the if condition accordingly to increase the sorting, etc.
Sequential search (find an element in an 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);
Simplified Enhanced Version
function seq_sch($array, $k){
$y = $m = 'no';
foreach($array as $i => $v){
if($v == $k){
if($i == 'no'){$m = 'yes'}//防止key = no
$y = $i;
break;
}
}
if ($y != 'no' || $m == 'yes'){
return $y;
}else{
return -1;
}
}
此方法适用于所有一维数组
Deletion of linear tables (implemented in arrays)
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 ;
}
$i specifies the delete 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;
}
Quicksort (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);
}
string length
function strlen ($str){
if ($str == '' ) return 0;
$count = 0;
while (1){
if ($str[$count] != NULL){
$count++;
continue;
}else{
break;
}
}
return $count;
}
while (1) where 1 represents a constant expression that will never be equal to 0. So, the loop will continue to execute. The loop will abort unless you set break and other similar out-of-loop statements
$str[count] php is a weakly typed language, you can use subscripts to read the corresponding parameters at the corresponding position
truncate substring
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;
}
String flip
function strrev($str){
if ($str == '') return 0 ;
for ($i=(strlen($str)- 1); $i>=0; $i --){
$rev_str .= $str[$i ];
}
return $rev_str;
}
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;
}
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 ;
}
strcmp( substr) string comparison method if you 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;
}
- The strchr() function searches for the first occurrence of a string within another string.
This function is an alias for 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 ;
}
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 string
function strcpy($s1, $s2){
if (strlen($s1)==NULL || !isset($s2)) return;
for ($i=0; $i<strlen($s1); $i++){
$s2[] = $s1[$i];
}
return $s2;
}
connection 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;
}