旧文重整理:数据结构和字符串处理代码整理

整理一下以前写的部分算法和字符串处理函数,东西没有什么用,只是为了学习而已。 http://blog.csdn.net/heiyeshuwu/article/details/787426 Author: heiyeluren Blog: http://blog.csdn.net/heiyeshuwu Date: 2006-06-10 23:50 <? //-------------------- // 基本数据结构算法 //--------------------  //二分查找(数组里查找某个元素) 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/gxldan/p/4066689.html