<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>The Townes &#187; php算法和应用</title>
	<atom:link href="https://thetownes.coolpage.biz/?feed=rss2&#038;tag=php%E7%AE%97%E6%B3%95%E5%92%8C%E5%BA%94%E7%94%A8" rel="self" type="application/rss+xml" />
	<link>https://thetownes.coolpage.biz</link>
	<description>本站已转移至：http://www.thetownes.info</description>
	<lastBuildDate>Thu, 01 Aug 2013 11:49:56 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.2</generator>
		<item>
		<title>一些重要的php算法和应用</title>
		<link>https://thetownes.coolpage.biz/?p=372</link>
		<comments>https://thetownes.coolpage.biz/?p=372#comments</comments>
		<pubDate>Sat, 13 Jul 2013 14:52:28 +0000</pubDate>
		<dc:creator>Will</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[php算法和应用]]></category>

		<guid isPermaLink="false">http://thetownes.coolpage.biz/?p=372</guid>
		<description><![CDATA[1. 使用PHP描述冒泡排序和快速排序算法，对象可以是一个数组 //冒泡排序（数 &#8230; <a href="https://thetownes.coolpage.biz/?p=372">继续阅读 <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>1. 使用PHP描述冒泡排序和快速排序<a href="http://www.xuephp.com/main/search.php?keyword=%CB%E3%B7%A8">算法</a>，对象可以是一个数组</p>
<p>//冒泡排序（数组排序）</p>
<p>function bubble_sort($array)</p>
<p>{</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$count = count($array);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ($count &lt;= 0) return false;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for($i=0; $i&lt;$count; $i++){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for($j=$count-1; $j&gt;$i; $j–){</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ($array[$j] &lt; $array[$j-1]){</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$tmp = $array[$j];</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$array[$j] = $array[$j-1];</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$array[$j-1] = $tmp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $array;</p>
<p>}</p>
<p>//快速排序（数组排序）</p>
<p>function quick_sort($array) {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (count($array) &lt;= 1) return $array;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$key = $array[0];</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$left_arr = array();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$right_arr = array();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for ($i=1; $i&lt;count($array); $i++){</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ($array[$i] &lt;= $key)</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$left_arr[] = $array[$i];</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$right_arr[] = $array[$i];</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$left_arr = quick_sort($left_arr);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$right_arr = quick_sort($right_arr);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return array_merge($left_arr, array($key), $right_arr);</p>
<p>}</p>
<p>2. 使用PHP描述顺序查找和二分查找（也叫做折半查找）<a href="http://www.xuephp.com/main/search.php?keyword=%CB%E3%B7%A8">算法</a>，顺序查找必须考虑效率，对象可以是一个有序数组</p>
<p>//二分查找（数组里查找某个元素）</p>
<p>function bin_sch($array, $low, $high, $k){</p>
<p>&nbsp;&nbsp;&nbsp;if ($low &lt;= $high){</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$mid = intval(($low+$high)/2);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ($array[$mid] == $k){</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $mid;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}elseif ($k &lt; $array[$mid]){</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return bin_sch($array, $low, $mid-1, $k);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else{</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return bin_sch($array, $mid+1, $high, $k);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;return -1;</p>
<p>}</p>
<p>//顺序查找（数组里查找某个元素）</p>
<p>function seq_sch($array, $n, $k){</p>
<p>&nbsp;&nbsp;&nbsp;$array[$n] = $k;</p>
<p>&nbsp;&nbsp;&nbsp;for($i=0; $i&lt;$n; $i++){</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($array[$i]==$k){</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;if ($i&lt;$n){</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $i;</p>
<p>&nbsp;&nbsp;&nbsp;}else{</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return -1;</p>
<p>&nbsp;&nbsp;&nbsp;}</p>
<p>}&nbsp;&nbsp;</p>
<p>3. 写一个二维数组排序<a href="http://www.xuephp.com/main/search.php?keyword=%CB%E3%B7%A8">算法</a>函数，能够具有通用性，可以调用php内置函数</p>
<p>//二维数组排序， $arr是数据，$keys是排序的健值，$order是排序规则，1是升序，0是降序</p>
<p>function array_sort($arr, $keys, $order=0) {</p>
<p>if (!is_array($arr)) {</p>
<p>&nbsp;return false;</p>
<p>}</p>
<p>$keysvalue = array();</p>
<p>foreach($arr as $key =&gt; $val) {</p>
<p>&nbsp;$keysvalue[$key] = $val[$keys];</p>
<p>}</p>
<p>if($order == 0){</p>
<p>&nbsp;asort($keysvalue);</p>
<p>}else {</p>
<p>&nbsp;arsort($keysvalue);</p>
<p>}</p>
<p>reset($keysvalue);</p>
<p>foreach($keysvalue as $key =&gt; $vals) {</p>
<p>&nbsp;$keysort[$key] = $key;</p>
<p>}</p>
<p>$new_array = array();</p>
<p>foreach($keysort as $key =&gt; $val) {</p>
<p>&nbsp;$new_array[$key] = $arr[$val];</p>
<p>}</p>
<p>return $new_array;</p>
<p>}</p>
<p>4. 使用五种以上方式获取一个文件的扩展名</p>
<p>function get_ext1($file_name){</p>
<p>return strrchr($file_name, ”.”);</p>
<p>}</p>
<p>function get_ext2($file_name){</p>
<p>return substr($file_name, strrpos($file_name, ”.”));</p>
<p>}</p>
<p>function get_ext3($file_name){</p>
<p>return array_pop(explode(”.”, $file_name));</p>
<p>}</p>
<p>function get_ext4($file_name){</p>
<p>$p = pathinfo($file_name);</p>
<p>return $p[''extension''];</p>
<p>}</p>
<p>function get_ext5($file_name){</p>
<p>return strrev(substr(strrev($file_name), 0, strpos(strrev($file_name), ”.”)));</p>
<p>}</p>
<h5>(转发请注明转自:<a href="http://www.xuephp.com/main/detail.php?cid=16685">学PHP</a>)</h5>
]]></content:encoded>
			<wfw:commentRss>https://thetownes.coolpage.biz/?feed=rss2&#038;p=372</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
