分享一道PHP面试题(冒泡排序)

冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。法如其名,就是像冒泡一样,每次从数组当中 冒一个最大的数出来。 冒泡排序它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复

冒泡排序(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 ‘

';

print_r($engage->getArray());

echo '

‘;

echo $engage->getString(‘make_by_nowamagic’);

echo ‘

';

print_r($engage->getBubble());

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

)

关于作者: dawei

【声明】:石家庄站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

为您推荐