一朋友找工作遇到的试题,备注一下。 极有可能今后我也会遇到的。 问题:php不用内置函数对数组排序,可能是降序或者升序 第一种方法:传说中的冒泡法 <div class="codetitle"><a style="CURSOR: pointer" data="29017" class="copybut" id="copybut29017" onclick="doCopy('code29017')"> 代码如下:<div class="codebody" id="code29017"> function arraysort($data,$order = 'asc') { //asc升序 desc降序 $temp = array (); $count = count ( $data ); if ($count <= 0) return false; //传入的数据不正确 if ($order == 'asc') { for($i = 0; $i < $count; $i ++) { for($j = $count - 1; $j > $i; $j --) { if ($data [$j] < $data [$j - 1]) { //交换两个数据的位置 $temp = $data [$j]; $data [$j] = $data [$j - 1]; $data [$j - 1] = $temp; } } } } else { for($i = 0; $i < $count; $i ++) { for($j = $count - 1; $j > $i; $j --) { if ($data [$j] > $data [$j - 1]) { $temp = $data [$j]; $data [$j] = $data [$j - 1]; $data [$j - 1] = $temp; } } } } return $data; } $data = array (7,5,3,8,9,1,24,87,33,12,34,54,66,32 ); var_dump ( arraysort ( $data ) ); //升序 echo (' '); var_dump ( arraysort ( $data,'desc') );//降序 第二种方法:不知道取个什么名字好,就叫插入法吧!囧 <div class="codetitle"><a style="CURSOR: pointer" data="20731" class="copybut" id="copybut20731" onclick="doCopy('code20731')"> 代码如下:<div class="codebody" id="code20731"> function arraysort3($data,$order = 'asc') { //目前只做升序排列 $count = count ( $data ); for($i = 1; $i < $count; $i ++) { $temp = $data [$i]; $j = $i - 1; while ( $data [$j] > $temp ) { $data [$j + 1] = $data [$j]; $data [$j] = $temp; $j --;//为什么要递减:从高位逐位判断 } } return $data; } $data = array (7,32 ); var_dump ( arraysort3 ( $data ) ); //升序
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|