Здравствуйте , не совсем понимаю почему не работает следующий кусок кода ( на С этот алгоритм работает верно , на PHP почему-то нет) . на С на PHP Заранее спасибо.
если $i + $j - нечётное число, то $m будет float'ом, а вовсе не int'ом как в сях. И соответственно: 1) ($i != $m), ($j!=$m), ( $m != $left ), ( $m != $right ) в этом случае будет true для любых целочисленных $i, $m, $left и $right; 2) Во время рекурсии будет идти накопление ошибки в $m.
Точно , всё дело было в этом , спасибо . Последний вопрос задам , если можно : Реально самому написать сортировку на PHP , чтобы она быстрее работала , чем стандратные функции типа sort ? А то я просто время засёк и сравнил , так оказалось что моя собcnвенная сортировка уступает стандартной , и это при условии что,она вроде бы как работает за O(n*logn) ))
nvseРеально самому написать сортировку на PHP , чтобы она быстрее работала , чем стандратные функции типа sort ? Я очень сильно сомневаюсь в этом. Как я понимаю, нативные функции php являются составной частью Zend Engine, написаны на C и исполняются процессором напрямую. Написанные же на php функции переводятся в байткод виртуальной машины Zend Engine II, который уже потом исполняется самой виртуальной машиной. А это значит, что каждый раз, например, встречая переменную, Zend Engine должен её найти в памяти, проверить её тип и при необходимости привести его к нужному, определить, допустима ли данная операция для данного типа и т.д. и т.п.
nvse, php использует алгоритм qsort на уровне C. Если хочется поднять скорость - имеет смысл написать свое расширение для пыха на C, которое будет использовать более быстрый алгоритм.
если $i + $j - нечётное число, то $m будет float'ом, а вовсе не int'ом как в сях. И соответственно:
1) ($i != $m), ($j!=$m), ( $m != $left ), ( $m != $right ) в этом случае будет true для любых целочисленных $i, $m, $left и $right;
2) Во время рекурсии будет идти накопление ошибки в $m.
Попытайтесь заменить на
или
Реально самому написать сортировку на PHP , чтобы она быстрее работала , чем стандратные функции типа sort ?
А то я просто время засёк и сравнил , так оказалось что моя собcnвенная сортировка уступает стандартной , и это
при условии что,она вроде бы как работает за O(n*logn) ))
Я очень сильно сомневаюсь в этом. Как я понимаю, нативные функции php являются составной частью Zend Engine, написаны на C и исполняются процессором напрямую. Написанные же на php функции переводятся в байткод виртуальной машины Zend Engine II, который уже потом исполняется самой виртуальной машиной. А это значит, что каждый раз, например, встречая переменную, Zend Engine должен её найти в памяти, проверить её тип и при необходимости привести его к нужному, определить, допустима ли данная операция для данного типа и т.д. и т.п.