Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Бинарный поиск и слова

Сообщения:  [1-10]   [11-13] 

 
 автор: Красная_шляпа   (29.01.2010 в 14:51)   письмо автору
 
   для: Тень   (28.01.2010 в 22:10)
 

C list

  Ответить  
 
 автор: Trianon   (28.01.2010 в 22:52)   письмо автору
 
   для: Красная_шляпа   (28.01.2010 в 21:20)
 

Си строки сравнивает по их адресам. То есть никак.
Программист (на Си) строки сравнивает функцией strcmp() , то есть побайтово.
php - примерно как программист.
Если говорить о сравнении не просто строк, а о поиске ключей - здесь php считает хеш и локализует поиск по значению хеша. Побайтовая проверка всё равно выполняется.

  Ответить  
 
 автор: Тень   (28.01.2010 в 22:10)
 
   для: Красная_шляпа   (28.01.2010 в 21:30)
 

Приведи пример на Си, где есть подобное. лол

  Ответить  
 
 автор: Красная_шляпа   (28.01.2010 в 21:50)   письмо автору
 
   для: heed   (28.01.2010 в 21:39)
 

Мне это понятно что функциями, меня интересует немножко другое сам алгоритм работы этих функций
Как оно так выходит, к какому виду строка приводиться
>>> "ab" > "aa"
True
>>> "ab" < "aa"
False
>>>

  Ответить  
 
 автор: heed   (28.01.2010 в 21:39)   письмо автору
 
   для: Красная_шляпа   (28.01.2010 в 21:20)
 

функциями :)

Синтaксис:
 [C]
     int    strcmp( char      *string1,      char *string2);
      int  _fstrcmp( char _far *string1, char _far *string2);
      int   stricmp( char      *string1, char      *string2);
      int _fstricmp( char _far *string1, char _far *string2);
      int   strcmpi( char      *string1, char      *string2);

      int   strncmp ( char      *string1, char     *string2,
                                             size_t count );

      int _fstrncmp ( char _far *string1, char _far *string2,
                                             size_t count );

      int   strnicmp( char      *string1, char      *string2,
                                              size_t count );

      int _fstrnicmp( char _far *string1, char _far *string2,
                                              size_t count );
[C]

    Функции strcmp,  stricmp,  strncmp и strnicmp рaбoтaют с
    nulloкaнчивaющимися  стрoкaми.  Пaрaметр <string> в этих
    функциях oжидaется сoдержaщим null-симвoл (\0), мaркиру-
    ющий кoнец стрoки.

    Функции strcmpi  и  stricmp является нечувствительными к
    регистру версиями strcmp,  a strnicmp - нечувствительнoй
    к  регистру  версией  strncmp.  Функция strcmpi - стaрый
    синoним stricmp. Он пoддерживaется для сoвместимoсти.

    Функции strcmp, strcmpi и stricmp срaвнивaют <string1> и
    <string2> и вoзврaщaют знaчение,  укaзывaющее их oтнoше-
    ние:

     Знaчение  Смысл
[C]

    < 0       <string1> меньше, чем <string2>
    = 0       <string1> идентичен <string2>
    > 0       <string1> бoльше, чем <string2>
[C]

    Функции strncmp и strnicmp oперируют, в лучшем случaе,
    первыми <count> симвoлaми null-oкaнчивaющимися стрoк.
    Strncmp и strnicmp срaвнивaют, в лучшем случaе, первые
    <count> симвoлoв <string1> и <string2> и вoзврaщaют
    знaчение, укaзывaющее oтнoшение между пoдстрoкaми:

     Знaчение  Смысл
[C]

    < 0       <substring1> меньше, чем <substring2>
    = 0       <substring1> идентичнa   <substring2>
    > 0       <substring1> бoльше, чем <substring2>
[C]

    _f... - фoрмы этих функций являются незaвисимыми oт мoде-
    ли (large-model) фoрмaми, испoльзующими far-укaзaтели пa-
    рaметрoв стрoки и вoзврaщaемых знaчений. Эти незaвисимые
    oт мoдели  функции мoгут вызывaться из любoй тoчки в прo-
    грaмме. Зaметим, чтo незaвисимoй oт мoдели версии strcmpi
    не существует. Вы дoлжны испoльзoвaть для  этoгo  функцию
    _fstricmp.

    Вoзврaщaемые знaчения для этих функций oписaны выше.


в MSVC6эта функция написана так

//<?
int __cdecl strcmp 
(
        const 
char src,
        const 
char dst
        
)
{
        
int ret ;

        while( ! (
ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst)
                ++
src, ++dst;

        if ( 
ret )
                
ret = -;
        else if ( 
ret )
                
ret ;

        return( 
ret );
}

  Ответить  
 
 автор: Красная_шляпа   (28.01.2010 в 21:30)   письмо автору
 
   для: Красная_шляпа   (28.01.2010 в 21:13)
 

Вообще на счет массивов в php по мне все сделано через жопу никто не знает почему при удалении элемента массива не делается так же как в си(переиндексация)

  Ответить  
 
 автор: Красная_шляпа   (28.01.2010 в 21:20)   письмо автору
 
   для: Trianon   (28.01.2010 в 21:16)
 

Как php вообще строки сравнивает? Даже не php а C?

  Ответить  
 
 автор: Trianon   (28.01.2010 в 21:16)   письмо автору
 
   для: Красная_шляпа   (28.01.2010 в 21:13)
 

а хеш - не тип структуры данных, а методика реализации поиска.

  Ответить  
 
 автор: Красная_шляпа   (28.01.2010 в 21:13)   письмо автору
 
   для: Trianon   (28.01.2010 в 20:38)
 

В питоне нет ассоциативных массивов как нет и обычных массивов php(конечно же все это на самом деле есть но называется по-другому словарь, список(си-шный динамический массив), кортеж(неизменяемый массив)). А хэш я не знаю как эту бурду назвать

  Ответить  
 
 автор: Trianon   (28.01.2010 в 20:38)   письмо автору
 
   для: Красная_шляпа   (28.01.2010 в 20:20)
 

в php то же самое.

Кончайте ругаться. Читать противно.

Бинарный поиск к поиску по хешу не относится никак.

В php сложности поиска любого ключа по массиву решает движок php.
В нем это самое хеширование интегрировано в реализацию операции "взять элемент массива".
В питоне вроде тоже ассоциативные массивы есть с аналогичным принципом работы.
По-моему, уже и не осталось современных высокоуровневых языков, где таких средств не было бы предоставлено.

  Ответить  

Сообщения:  [1-10]   [11-13] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования