powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Как найти число
25 сообщений из 74, страница 2 из 3
Как найти число
    #36079729
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft пишет:

> Скорость выполнения операций добавления ... фиксирована
>
> Вы в этом уверены? ссылка на доку есть?

Да, это так.

Только я не понял, какую юный падаван решал задачу, и, если
ту, которую я думаю, как он её решил. В смысле, там неправильно.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как найти число
    #36079735
гдеже?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Варант с битовой картой тогда логичнее...
Или сделать второй массив...размерностью до M
Прогоняя исходный в цикле, ставим 1-ку по индексу, равному значению элемента.
Если потом встречается равный, все, приехали.
...
Рейтинг: 0 / 0
Как найти число
    #36079743
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
miksoft пишет:

> Скорость выполнения операций добавления ... фиксирована
>
> Вы в этом уверены? ссылка на доку есть?

Да, это так.Тогда похоже на O(N).

MasterZivТолько я не понял, какую юный падаван решал задачу, и, если
ту, которую я думаю, как он её решил. В смысле, там неправильно.
Что именно неправильно?
...
Рейтинг: 0 / 0
Как найти число
    #36079757
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гдеже?Варант с битовой картой тогда логичнее...
Или сделать второй массив...размерностью до M
Прогоняя исходный в цикле, ставим 1-ку по индексу, равному значению элемента.
Если потом встречается равный, все, приехали.То, что вы описываете - и есть битовая карта. Почему "или" ?
...
Рейтинг: 0 / 0
Как найти число
    #36079769
MasterZiv
Только я не понял, какую юный падаван решал задачу, и, если
ту, которую я думаю, как он её решил. В смысле, там неправильно.


Я вот тоже не вижу косяков, кроме того, что в цикле прохода по массиву вместо ELEMENTS_COUNT жестко забито 100 000. Буду весьма признателен MasterZiv, если он укажет в чем я не прав.
...
Рейтинг: 0 / 0
Как найти число
    #36079780
гдеже?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,

да просто рамером.
Не ругайте сильно, я тоже падаван, и я имел в виду лишь порядок действий)
...
Рейтинг: 0 / 0
Как найти число
    #36079842
vino
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
гдеже?miksoft,
да просто рамером.
Не ругайте сильно, я тоже падаван, и я имел в виду лишь порядок действий)
для данной задачи не требуется индексировать ряд чисел, так что одного бита на число (битовой карты) достаточно.
Поражают только размеры - 536870912 байт для любых 32-битных чисел
...
Рейтинг: 0 / 0
Как найти число
    #36079843
гдеже?miksoft,
Не ругайте сильно, я тоже падаван

Тебя еще не приняли в падаваны ;)
...
Рейтинг: 0 / 0
Как найти число
    #36079847
гдеже?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Очень юный падаван,

Подождем Йоду...
...
Рейтинг: 0 / 0
Как найти число
    #36079854
гдеже?
Подождем Йоду...

Главное, что бы пришел Йода, а не Энакин из третьей части =)
...
Рейтинг: 0 / 0
Как найти число
    #36079867
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как найти число
    #36079910
Фотография AlexandrPlus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
учебные примеры на Pascal
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
while M[ 1 ]<>M[M[ 1 ]]
 do
 begin
 MM:=M[ 1 ];
 M[ 1 ]:=M[M[ 1 ]];
 M[MM]:=MM;
 end;
только число 1 не должно быть в массиве M
...
Рейтинг: 0 / 0
Как найти число
    #36079941
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexandrPlusучебные примеры на Pascal
Похоже, это решается какой-то частный случай обсуждаемой задачи, довольно ограниченный.
...
Рейтинг: 0 / 0
Как найти число
    #36080072
Фотография AlexandrPlus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftAlexandrPlusучебные примеры на Pascal
Похоже, это решается какой-то частный случай обсуждаемой задачи, довольно ограниченный.

по задаче
N = M+1
и тогда шоб красиво - так может быть
Код: plaintext
1.
2.
3.
4.
while m[ 0 ]!=m[m[ 0 ]]:
    mm = m[ 0 ]
    m[ 0 ] = m[m[ 0 ]]
    m[mm]=mm
...
Рейтинг: 0 / 0
Как найти число
    #36080073
vino
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AlexandrPlus, например, в приведенном строго просматривается условие N >= M, а такого в условиии нет
...
Рейтинг: 0 / 0
Как найти число
    #36080080
vino
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AlexandrPlus...по задаче
N = M+1
и тогда шоб красиво - так может быть
Код: plaintext
1.
2.
3.
4.
while m[ 0 ]!=m[m[ 0 ]]:
    mm = m[ 0 ]
    m[ 0 ] = m[m[ 0 ]]
    m[mm]=mm

если это к задаче, которую для прикола привел я, то там никаких перестановок не нужно
...
Рейтинг: 0 / 0
Как найти число
    #36080085
Фотография AlexandrPlus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дописать для "танкистов":
искомое число будет в m[0]
...
Рейтинг: 0 / 0
Как найти число
    #36080093
Фотография AlexandrPlus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vinoAlexandrPlus...по задаче
N = M+1
и тогда шоб красиво - так может быть
Код: plaintext
1.
2.
3.
4.
while m[ 0 ]!=m[m[ 0 ]]:
    mm = m[ 0 ]
    m[ 0 ] = m[m[ 0 ]]
    m[mm]=mm

если это к задаче, которую для прикола привел я, то там никаких перестановок не нужно

так и в этой другого N не может быть
ничего не переставляет - указатели
...
Рейтинг: 0 / 0
Как найти число
    #36080121
Фотография AlexandrPlus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В задаче за наименьшее "математическое" время - то есть перестановки в том времени.
Так наверное?
...
Рейтинг: 0 / 0
Как найти число
    #36080170
vino
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AlexandrPlus, очевидно, что когда N = M+1, задача вырождается в расчетную: искомое число = сумма элементов -сумма арифметической последовательности (1,2,..,M)
...
Рейтинг: 0 / 0
Как найти число
    #36080184
vino
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AlexandrPlus[quot vino][quot AlexandrPlus]...так и в этой другого N не может быть...
здесь как раз N <= M и только поиском можно найти искомое число
...
Рейтинг: 0 / 0
Как найти число
    #36080218
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft пишет:

> Тогда похоже на O(N).
Похоже, похоже. Только программа неправильная.
>
> MasterZiv
> Только я не понял, какую юный падаван решал задачу, и, если
> ту, которую я думаю, как он её решил. В смысле, там неправильно.
>
> Что именно неправильно?

Ну я не увидел там поиска уже найденного и выхода, в случае если он уже найден.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как найти число
    #36080261
Фотография AlexandrPlus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vinoAlexandrPlus[quot vino][quot AlexandrPlus]...так и в этой другого N не может быть...
здесь как раз N <= M и только поиском можно найти искомое число

тады, чтобы приладить алгоритм - можно расширить массив N до M+1, заполнив нулями, и когда в m[0] или
по порядку следования в m встретится 0, то просто брать в m[0] следующие число по порядку ОДНОГО прохода
по m

при этом остаемся в "линейном" времени

P.S. Хотя есть память ограничена, то - не пройдет.
...
Рейтинг: 0 / 0
Как найти число
    #36080284
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivНу я не увидел там поиска уже найденного и выхода, в случае если он уже найден.
Вот же:Очень юный падаван if((s = set.size()) == size){
doubleValue = array[i];
break;
...
Рейтинг: 0 / 0
Как найти число
    #36080287
junior idiot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Очень юный падаванУверен. Специально перечитал =)
This class offers constant time performance for the basic operations (add, remove, contains and size)
Быть такого не может, просто потому что такого не может быть (теория информации вещь суровая, и против нее не попрешь, даже с джавой за пазухой).
А еще там есть приписка: " assuming the hash function disperses the elements properly among the buckets. ".
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
    /**
     * Adds an item to this collection.
     * @param x any object.
     * @return true if this item was added to the collection.
     */
    public boolean add( AnyType x )
    {
        int currentPos = findPos( x );
        if( isActive( array, currentPos ) )
            return false;
       
        if( array[ currentPos ] == null ) 
            occupied++;
        array[ currentPos ] = new HashEntry( x, true );
        currentSize++;
        modCount++;
        
        if( occupied > array.length /  2  )        
            rehash( );
                
        return true;                   
    }

    /**
     * Method that performs quadratic probing resolution.
     * @param x the item to search for.
     * @return the position where the search terminates.
     */
    private int findPos( Object x )
    {
        int offset =  1 ;
        int currentPos = ( x == null ) ?  0  : Math.abs( x.hashCode( ) % array.length );

        while( array[ currentPos ] != null )
        {
            if( x == null )
            {
                if( array[ currentPos ].element == null )
                    break;
            }
            else if( x.equals( array[ currentPos ].element ) )   
                break; 
            
            currentPos += offset;                  // Compute ith probe
            offset +=  2 ;
            if( currentPos >= array.length )       // Implement the mod
                currentPos -= array.length;
        }

        return currentPos;
    }
Ну и где тут лайнеар тайм? log N как и полагается, а подобие линейности возникает только при работе с маленькими (десятки, сотни) множествами объектов, для которых хорошо написан hashCode(). На практике именно такие ситуации обычно и возникают, потому и написали "линейное", но это нифига не значит что миллион любых чисел можно так взять и вставить в этот хешсет так же быстро как в массив.
...
Рейтинг: 0 / 0
25 сообщений из 74, страница 2 из 3
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Как найти число
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]