分享一道PHP面试题(冒泡排序)
冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。法如其名,就是像冒泡一样,每次从数组当中 冒一个最大的数出来。 冒泡排序它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。 冒泡排序的原则:是比较相邻的元素,如果违反最后的顺序准则,则交换。 可以简化理解为: 第一次找到所有元素中最大的放在最后一个位置上,不再变动; 第二次找到剩余所有元素中最大的放在倒数第二个位置上,不再变动; 以此类推,直到排序完成。 冒泡排序法是面试题中常考的一个重要题型,一般出现在笔试题的倒出第2题或者第3题部分,考察形式很简单,就问你“请写一个经典的冒泡排序“。 一道PHP笔试题:请使用伪语言结合数据结构冒泡排序法对以下一组数据进行排序 10 2 36 14 10 25 23 85 99 45。 下面是参考代码。 class engage { public function getArray() { $arr1 = array ( '0' => array ('fid' => 1,'tid' => 1,'name' => 'Name1' ), '1' => array ('fid' => 1,'tid' => 2,'name' => 'Name2' ), '2' => array ('fid' => 1,'tid' => 5,'name' => 'Name3' ), '3' => array ('fid' => 1,'tid' => 7,'name' => 'Name4' ), '4' => array ('fid' => 3,'tid' => 9,'name' => 'Name5' ) ); $arr2 = array(); foreach ($arr1 as $key => $value) { $arr2[$value['fid']][] = array('tid' => $value['tid'],'name' => $value['name']); } return $arr2; } //print_r($arr2); //$eString = 'open_door'; public function getString($eString = null) { $eString = explode('_',$eString); $eString = array_map("ucfirst",$eString); $eString = implode($eString,''); return $eString; } /** * 冒泡排序 * @return unknown */ public function getBubble() { $isOver = false; $bubbleArray = array(10,2,36,14,10,25,23,85,99,45); $bubbleResult = $bubbleArray; do{ $bubbleArray = $bubbleResult; $isOver = true; foreach ($bubbleArray as $key => $value) { if ($value < $bubbleResult[$key-1]) { $bubbleResult[$key]=$bubbleResult[$key-1]; $bubbleResult[$key-1]=$value; $isOver = false; } } }while (!$isOver); return $bubbleResult; } } $engage = new engage(); echo ' ';'; echo $engage->getString('make_by_nowamagic'); echo ' ';'; ?> 程序运行结果如下: Array ( [1] => Array ( [0] => Array ( [tid] => 1 [name] => Name1 ) [1] => Array ( [tid] => 2 [name] => Name2 ) [2] => Array ( [tid] => 5 [name] => Name3 ) [3] => Array ( [tid] => 7 [name] => Name4 ) ) [3] => Array ( [0] => Array ( [tid] => 9 [name] => Name5 ) ) ) MakeByNowamagic Array ( [0] => 2 [1] => 10 [2] => 10 [3] => 14 [4] => 23 [5] => 25 [6] => 36 [7] => 45 [8] => 85 [9] => 99 ) (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |