<?php
$db=mysql_connect ("localhost", "root", "") or die ('I cannot connect to the database because: ' . mysql_error());
//-select the database to use
$mydb=mysql_select_db("address");
$aArray = array();
$sSQL = sprintf("SELECT * FROM address1",
mysql_real_escape_string($ir['fname'])
);
$rResult = mysql_query($sSQL);
while ($aRow = mysql_fetch_assoc($rResult))
{
$aArray[] = $aRow;
}
//print_r($aArray);
echo"<br>";
echo"<br>";
echo"<br>";
$unsorted = $aArray;
function quicksort($array)
{
if (count($array) == 0)
return array();
$pivot = $array[0];
$left = $right = array();
for ($i = 1; $i < count($array); $i++) {
if ($array[$i] < $pivot)
$left[] = $array[$i];
else
$right[] = $array[$i];
}
return array_merge(quicksort($left), array($pivot), quicksort($right));
}
$sorted = quicksort($unsorted);
print_r($sorted);
?>
我试图从MySQL数据库(2500行数据)拉一些数据,然后将该数据存储到数组中,然后对该数组进行快速排序。我不知道我的方法是否错了,所以任何帮助都会非常感激。到目前为止,我一直得到一个错误:
致命错误:已达到最大函数嵌套级别"100",中止!in C:'wamp'www'koolbi'heapsearch.php on line 25
我将把这些评论总结成一个答案,以供将来参考。最好的解决方案是在MySQL查询中排序结果;在这种情况下,SELECT * FROM address1 ORDER BY [your field] ASC|DESC
;其中ASC|DESC将选择订单。有关MySQL排序的更多信息,请查看此文档或MySQL文档。
同样,正如Mark Baker所说,如果你需要在PHP中做这件事,使用内置的函数。大多数语言的内置函数都是非常高效的(事实上,我相信大多数PHP都是用C原生编写的),这使得它们比你自己编写的任何东西都要快得多。
当然,如果这是学校的作业,你需要实现一个快速排序算法,你可能应该看看这个社区维护的解释