0
 <?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”的最大函数嵌套级别,正在中止!在第 25 行的 C:\wamp\www\koolbi\heapsearch.php

4

1 回答 1

1

我会将评论总结为答案以供将来参考。最好的解决方案是在 MySQL 查询中对结果进行排序;在这种情况下SELECT * FROM address1 ORDER BY [your field] ASC|DESC;其中 ASC|DESC 将选择订单。有关 MySQL 排序的更多信息,请查看文档或MySQL 文档

同样,正如 Mark Ba​​ker 所说,如果您需要在 PHP 中执行此操作,请使用内置函数。大多数语言的内置函数在他们所做的事情上都会非常有效(事实上我相信大多数 PHP 都是用 C 原生编写的),这使得它们比你自己编写的任何东西都要快得多。

当然,如果这是您需要实施快速排序算法的学校作业,您可能应该查看这个社区维护的解释

于 2013-03-06T01:23:56.383 回答