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

原创 2006年06月10日 23:52:00


整理一下以前写的部分算法和字符串处理函数,东西没有什么用,只是为了学习而已。

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

?>
版权声明:本文为黑夜路人原创文章,未经允许请勿转载

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

整理一下以前写的部分算法和字符串处理函数,东西没有什么用,只是为了学习而已。Author: heiyelurenBlog: http://blog.csdn.net/heiyeshuwuDate:...
  • liguiyuan
  • liguiyuan
  • 2008年04月10日 12:15
  • 149

数据结构和字符串处理代码整理

整理一下以前写的部分算法和字符串处理函数,东西没有什么用,只是为了学习而已。Author: heiyelurenBlog: http://blog.csdn.net/heiyeshuwuDate: 2...
  • ok7758521ok
  • ok7758521ok
  • 2007年08月12日 23:19
  • 553

如何整理代码

整理代码,是开发的优化工作,虽是小细节,但不可忽视。如何整理代码,这里分享在实际工作中,得到的建议。虽时隔很久,依然觉得很赞。分享在此。...
  • u013085212
  • u013085212
  • 2016年07月14日 11:05
  • 1169

常见数据结构与算法整理总结

一、线性表 线性表是最常用且最简单的一种数据结构,它是n个数据元素的有限序列。 实现线性表的方式一般有两种,一种是使用数组存储线性表的元素,即用一组连续的存储单元依次存储线...
  • yan_liwei
  • yan_liwei
  • 2017年03月05日 18:45
  • 433

JS代码整理

function gridclick(g,rowIndex,e,colIndex){ var gridId = g.id.substr(0,6); //取到面板 var store=g.getSt...
  • a1017680279
  • a1017680279
  • 2015年12月15日 20:50
  • 469

VS2008自动整理代码

应该先ctrl+A 或者(选中需要调整的代码段)然后alt+F8
  • artemisrj
  • artemisrj
  • 2013年03月27日 18:07
  • 990

C/C++代码整理源代码

C/C++代码整理源代码作者:Y___Y联系:yinwei_88@sina.com        对于程序员来说,经常需要到网上查找资料,尤其是源代码,但往往由于网页排版或者其他的原因,导致copy下...
  • Y___Y
  • Y___Y
  • 2006年11月09日 20:11
  • 2657

eclipse快捷键及代码整理

eclipse使用技巧 1、选中括号颜色:      Window->Preferences->Java->Editor->color 2、显示行号:      Window->Prefere...
  • superloveboy
  • superloveboy
  • 2015年02月25日 23:11
  • 2101

关于在Xcode中如何使用快捷键整理代码

Xcode是开发iOS应用和Mac OS应用的必备工具,但这个工具的辅助功能相对于Eclipse之类的IDE来说,还是比较少,在Eclipse里只要按Ctrl+Shift+F,就可以将Java代码格式...
  • miemie1320
  • miemie1320
  • 2014年11月05日 16:30
  • 10529

android studio 快捷键整理(一)

Alt+回车 导入包,自动修正 Ctrl+N   查找类 Ctrl+Shift+N 查找文件 Ctrl+Alt+L  格式化代码 Ctrl+Alt+O 优化导入的类和包 Alt+Insert 生成代码...
  • u010586698
  • u010586698
  • 2017年02月14日 15:23
  • 396
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:旧文重整理:数据结构和字符串处理代码整理
举报原因:
原因补充:

(最多只允许输入30个字)