Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Быстрая сортировка текста

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Skandalli
Отправлено: 06 Апреля, 2014 - 01:30:01
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Февр. 2014  


Помог: 0 раз(а)




Помогите плиз. Взял за основу http://ru[dot]wikibooks[dot]org/wiki/При[dot][dot][dot]строй_сортировки
и сделал такой код:

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $start = microtime(true);
  3. ini_set('memory_limit', '555M');
  4.  $arra = Array(
  5.                     "0" => Array(
  6.                         "name" => "error.txt",
  7.                         "size" => 200,
  8.                         "type" => "dfe",
  9.                         "mod" => 1392502979
  10.                     ),
  11.                     "1" => Array(
  12.                         "name" => "gifs_03_yapfiles.ru.gif",
  13.                         "size" => 4282106,
  14.                         "type" => "abc",
  15.                         "mod" => 1394738534,
  16.                     ),
  17.                     "2" => Array (
  18.                         "name" => "readme.txt",
  19.                         "size" => 1,
  20.                         "type" => "ytr",
  21.                         "mod" => 1391309100
  22.                     ),
  23.                     "3" => Array (
  24.                         "name" => "readme.txt",
  25.                         "size" => 1,
  26.                         "type" => "qqq",
  27.                         "mod" => 1391309100
  28.                     )
  29.                 );
  30. function ascii($array, $i, $base, $att){
  31.         $cnt = min((strlen($array[$i][$att])), strlen($array[$base][$att]));
  32.     $ord = '';
  33.     for($k = 0; $k < $cnt; $k++){
  34.         $int = ord($array[$i][$att][$k]);
  35.         $ord .= $int;
  36.     }
  37.     return (int)$ord;
  38. }
  39. function quicksort (&$array, $att, $l=0, $r=0) {
  40.         if($r === 0) $r = count($array)-1;
  41.         $i = $l;
  42.         $base = 1;
  43.         $j = $r;  
  44.         do {
  45.             while (ascii($array, $i, $base, $att) < ascii($array, $base,$base, $att)) $i++;
  46.             while (ascii($array, $j, $base, $att) > ascii($array, $base, $base, $att)) $j--;
  47.             if ($i <= $j) {
  48.                 if (ascii($array, $i, $base, $att) > ascii($array, $j, $base, $att)) list($array[$i], $array[$j]) = array($array[$j], $array[$i]);
  49.                     $i++;
  50.                     $j--;
  51.             }
  52.         }while ($i <= $j);
  53.         if ($i < $r) quicksort ($array, $att, $i, $r);
  54.         if ($j > $l) quicksort ($array, $att, $l, $j);
  55.  
  56. }
  57.  
  58. $a = "type";
  59. $s = $arra;
  60. quicksort($s, $a);
  61. $d=  $s;
  62. print_r($s);
  63. $time = microtime(true) - $start;
  64. printf('Скрипт выполнялся %.4F сек.', $time);
  65.  
  66. ?>


Если массив <3 элементов - все норм. Если больше - белый экран. Подскажите, пожалуйста, что не так в коде. И как его можно улучшить. Спасибо
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB