Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.04.2012, 15:11   #1
kilogram
Форумчанин
 
Регистрация: 04.03.2012
Сообщений: 144
По умолчанию Быстрая сортировка

PHP код:
<?php 
$mas 
= array(5,3,-1,4,2,-300,6,-500,-100);
function 
sos($a1,$a2)
{
    return 
$a2 $a1;
}
function 
dobavka(&$mas$func){
   
sortirovka($mas0count($mas)-1$func);
}

function 
sortirovka(&$mas,$min,$max,$func){
$i $min;
$j $max;
$x $mas[($min+$max)/2];

do{
    while(
$func($mas[$i], $x)<0) ++$i;
    while(
$func($mas[$j], $x)>0) --$j;
    if(
$i<=$j){
         
$element $mas[$i];
         
$mas[$i] = $mas[$j];
         
$mas[$j] = $element;    
         
$i++; $j--;
}   
}while(
$i<=$j);

if(
$min<$jsortirovka($mas,$min,$j$func); //начало с серединой 
if($i<$maxsortirovka($mas,$i,$max$func); // середина с концом
}

dobavka($mas'sos');
foreach(
$mas as $rez)
echo 
$rez.' '.' ';

?>
Смущает, как в переменную $func можно добавить круглые скобки и записать выражение?
PHP код:
while($func($mas[$i], $x)<0) ++$i;
    while(
$func($mas[$j], $x)>0) --$j
Что это означает? С функцией понимаю ,а вот с переменной, как она со скобками и внутри выражение?
kilogram вне форума Ответить с цитированием
Старый 28.04.2012, 16:28   #2
Cronos20
Форумчанин
 
Регистрация: 08.07.2010
Сообщений: 679
По умолчанию

Потрясающий пример говнокода, я бы вам посоветовал запостить его на соответствующий сайт )
А по делу
Код:
$func = "sos"; // функция вызывается по ее имени при передачи в
dobavka($mas, 'sos'); 
// равносильно
while(sos($mas[$i], $x)<0) ++$i; 
    while(sos($mas[$j], $x)>0) --$j;

Последний раз редактировалось Cronos20; 28.04.2012 в 16:32.
Cronos20 вне форума Ответить с цитированием
Старый 28.04.2012, 21:58   #3
kilogram
Форумчанин
 
Регистрация: 04.03.2012
Сообщений: 144
По умолчанию

Попробовал написать такой код, который вычисляет квдадрат числа.

PHP код:
function santa($n)
{
   return 
$n*$n;
}

function 
balta($n)
{
   return 
$n(5);
}

echo 
balta("santa");
echo 
'<br />'
Как-то странно так получилось, ради интереса написал santa в параметре функции и ошибок не выдало.
Это что, получается я передал всю функцию санта в функции балта?
В пхп разве если при вызове писать что-то в кавычках и оно совпадет с названием функции ранее где-то описаной в коде выше то передастся не строка ,а сама функция в качестве аргумента?
kilogram вне форума Ответить с цитированием
Старый 28.04.2012, 22:48   #4
9i.
Форумчанин
 
Регистрация: 29.09.2011
Сообщений: 103
По умолчанию

Цитата:
Сообщение от kilogram Посмотреть сообщение
Попробовал написать такой код, который вычисляет квдадрат числа.

PHP код:
function santa($n)
{
   return 
$n*$n;
}

function 
balta($n)
{
   return 
$n(5);
}

echo 
balta("santa");
echo 
'<br />'
Как-то странно так получилось, ради интереса написал santa в параметре функции и ошибок не выдало.
Это что, получается я передал всю функцию санта в функции балта?
В пхп разве если при вызове писать что-то в кавычках и оно совпадет с названием функции ранее где-то описаной в коде выше то передастся не строка ,а сама функция в качестве аргумента?
а как вы тогда объясните переменную santa(5) ?????
9i. вне форума Ответить с цитированием
Старый 29.04.2012, 00:51   #5
kilogram
Форумчанин
 
Регистрация: 04.03.2012
Сообщений: 144
По умолчанию

Я так понял интерпретатор языка ПХП когда видит название переменной, а за ней скобки, подставляет значение этой переменной в название этой переменной со скобками,если значение этой переменной совпало с названием такой функции описаной где-то в коде.
kilogram вне форума Ответить с цитированием
Старый 29.04.2012, 01:00   #6
Mortimoro
Форумчанин
 
Регистрация: 03.12.2010
Сообщений: 334
По умолчанию

kilogram, ну ты и загнул ))

в данном случае, ты передал функции balta() строковое значение "santa", функция подставила это значение вместо переменной $n и соответственно вернула значение santa(5), которое интерпретатор воспринимает как вызов функции.
Mortimoro вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Быстрая сортировка(сортировка Хоара). Сортировка фрагмента массива [C++] druger Помощь студентам 0 20.04.2012 15:49
Быстрая сортировка(сортировка хаора) с++ LustHunter Помощь студентам 3 07.10.2011 19:37
Быстрая сортировка Neitrosha Помощь студентам 0 07.12.2010 19:40
Быстрая сортировка Serious Общие вопросы Delphi 2 02.11.2010 13:38
быстрая сортировка настолько быстрая Serg12 Помощь студентам 8 28.03.2010 21:31