![]() |
![]() |
![]() |
|
OFF: Сколько вам нужно времени чтобы написать любой алгоритм сортировки? | ☑ | ||
---|---|---|---|---|
0
Doomer
18.06.09
✎
14:06
|
Сколько вам нужно времени чтобы написать любой (самый простой алгоритм сортировки массива?
|
|||
1
dimoff
18.06.09
✎
14:06
|
20 секунд
|
|||
2
VladZ
18.06.09
✎
14:07
|
(0) Нисколько... ЗАчем 1С-нику сортировка в массивах?
|
|||
3
los_hooliganos
18.06.09
✎
14:07
|
(2) Это типа круто.
|
|||
4
Shurjk
18.06.09
✎
14:08
|
(1) Брешешь. Там мнимум 6 строк.
|
|||
5
dimoff
18.06.09
✎
14:08
|
(4)
СЗ = Новый СписокЗначений; СЗ.ЗагрузитьЗначения(Масс); СЗ.СортироватьПоЗначению(); Масс = СЗ.ВыгрузитьЗначения(); |
|||
6
wPa
18.06.09
✎
14:09
|
(5) ) это не алгоритм
|
|||
7
VladZ
18.06.09
✎
14:09
|
(6) Гы-гы-гы.. А почему бы и нет? :)
|
|||
8
AlexSSSS
18.06.09
✎
14:10
|
(0) на память помню только пузырька - напишу минут за 5-10. Если реально будет нужно - возьму с полки Кнутта и подберу алгоритм. В любом случае больше 20 минут вряд ли.
|
|||
9
Alexor
18.06.09
✎
14:10
|
Если не самый эффективный где-то минута.
|
|||
10
dimoff
18.06.09
✎
14:10
|
Если нельзя СЗ использовать, тогда минут 10 наверное, самый простой. но я тупой, наверняка кто-то быстрее справится
|
|||
11
H A D G E H O G s
18.06.09
✎
14:10
|
Час, полтора..
|
|||
12
Shurjk
18.06.09
✎
14:11
|
(9) А какой самый эффективный помнишь?
|
|||
13
H A D G E H O G s
18.06.09
✎
14:11
|
(8) А мозгом подумать?
|
|||
14
H A D G E H O G s
18.06.09
✎
14:11
|
(12) Я - не помню.
Я так скажу. Методом вставки. |
|||
15
H A D G E H O G s
18.06.09
✎
14:11
|
И бисекции
|
|||
16
wPa
18.06.09
✎
14:11
|
(13) Кнут — закреплённая на палке веревка или кожаный ремень, служащие орудием понукания животных и наказания людей. Употреблялся в юридической практике России до 1845 года.
|
|||
17
H A D G E H O G s
18.06.09
✎
14:12
|
*** разочарован AlexSSSSом...
|
|||
18
Salvador Limones
18.06.09
✎
14:13
|
(17) Не переживай. Я вообще не смогу.
|
|||
19
Stepa86
18.06.09
✎
14:14
|
на 1С нет смысла писать, так как есть встроенные методы, которые всяко шустрее, на любом другом языке - минуты 3 чтоб нагуглить вот это http://ru.wikipedia.org/wiki/Быстрая_сортировка
|
|||
20
vde69
18.06.09
✎
14:16
|
мне стыдно, но я не знаю ни одного алгоритма сортировки!
правда знаю где про них почитать... ну и наверно минут за 30-60 смог реализовать что нибудь (на ум приходит такой вариант сортировка тройками, потом эти тройки обьединять по три в группу и так далее, в определенные моменты будет требоватся повторное перестроение внутри группы) |
|||
21
Shurjk
18.06.09
✎
14:16
|
(17) Вполне нормально, если уже лет 5 ничего не писал используя эти алгоритмы, то это вполне правдивый ответ.
|
|||
22
wPa
18.06.09
✎
14:17
|
(20) вспомнил только про индексную и пузырьковыми многопроходными (в лоб)
http://lotos-khv.narod.ru/algoritm/index2.htm |
|||
23
Дуб
18.06.09
✎
14:18
|
(0) перебор остатка массива с поиском максимума (минимума) с заполнением другого массива.. Тупо и ресурсоёмко, но работает.. Пять минут примерно :)
|
|||
24
quazare
18.06.09
✎
14:19
|
много... :)
|
|||
25
H A D G E H O G s
18.06.09
✎
14:19
|
(23) Если ты будешь строить "другой массив" методом бисекции - ничего не ресурсоемко.
|
|||
26
Shurjk
18.06.09
✎
14:20
|
(23) рекурсия
|
|||
27
H A D G E H O G s
18.06.09
✎
14:20
|
(26) Нет. Если я Дуба правильно понял.
|
|||
28
Shurjk
18.06.09
✎
14:21
|
(25) Бисекция это двоичный поиск по простому?
|
|||
29
vde69
18.06.09
✎
14:22
|
(23) алгоритм должен иметь разумный диапазон скорости при различных входных данных, например 100...200 строк в 1 сек (и это не должно зависить от размера входного массива и его заполнения, или зависит но в маленькой степени)
|
|||
30
Дядя Васька
18.06.09
✎
14:23
|
(0) А нахрена те самый простой? Ну пузырек за минуту напишу, но это не сортировка, а фигня, по времени работы. Есть замудреные алгоритмы, например Брезенхама, я так и не въехал как он работает, но работает с_ц_у_к_о быстро и правильно :)
|
|||
31
Дуб
18.06.09
✎
14:24
|
(26) зачем рекурсия?
Первый массив перебираем, сравнивая тек. значение с уже найденным максимумом. Нашли - максимум заменили. Так весь массив прошли. В итоге - взяли найденный максимум, из первого массива убрали, во второй положили. И так далее до тех пор, пока первый массив не кончится.. |
|||
32
wPa
18.06.09
✎
14:24
|
(28) бисекция - это всегда делить пополам
|
|||
33
Дуб
18.06.09
✎
14:24
|
(29) в (0) об этом не сказано ;)
|
|||
34
Shurjk
18.06.09
✎
14:25
|
(32) Я так и думал...
|
|||
35
Doomer
18.06.09
✎
14:25
|
Любой алгоритм. Лишь бы отсортировал. Резурсы и скорось не важны. ВАжен результат.
|
|||
36
Дядя Васька
18.06.09
✎
14:26
|
бисекция это фигня, там все понятно... Кто бы мне объяснил как (30) работает.. В свое время в инсте курсачек по нему написал с графиками который наглядно его работу демонстрирует, но я так и не понял смысла...
|
|||
37
Дядя Васька
18.06.09
✎
14:26
|
(35) Сортировать() :)
|
|||
38
dimoff
18.06.09
✎
14:27
|
Самый простой, если есть только массив и нет других переменных
Для А = 1 По М.Количество() - 1 Цикл Для Б = -(А-1) По 0 Цикл Если М[-Б+1] < М[-Б] Тогда Сохр1 = М[-Б]; Сохр2 = М[-Б+1]; М[-Б] = Сохр2; М[-Б+1] = Сохр1; Иначе Прервать; КонецЕсли; КонецЦикла КонецЦикла Не тестировал, но где-то три минуты |
|||
39
wPa
18.06.09
✎
14:27
|
(36) )) Это типа Шелла только графический с отрезками? )
Есть еще невыговариваемые - Хоара )) |
|||
40
H A D G E H O G s
18.06.09
✎
14:27
|
(28) "я не смотрел звездные войны, мудренных слов не знаю"..
1) Берем элемент 2) Сравниваем его со срединным элементом массива, который формируем(результат) 3) Если он больше - сравниваем со срединным элементом 2-ой части массива, и.т.д. 4) Нашли его место - вставили. По ходу движения - уже есть отсортированный массив. Важно: 1) правильно задавать граничные условия 2) вместо массива использовать индексированный двунаправленный список. |
|||
41
vde69
18.06.09
✎
14:27
|
(33) а иначе это не алгоритм а фигня, я когда триангуляцию облаков точек в 1с делал, прочитал столько всего специфического, что теперь понимаю многие заморочки с 3d моделированием...
сортировка - это на порядок проще :) |
|||
42
Shurjk
18.06.09
✎
14:28
|
(40) Просто помню этот алгоритм как двоичный поиск...
|
|||
43
H A D G E H O G s
18.06.09
✎
14:29
|
(41) 22 см.
|
|||
44
vde69
18.06.09
✎
14:29
|
(40) у тебя сдвиг будет долго работать (и сильно зависимо от размера данных)
|
|||
45
wPa
18.06.09
✎
14:29
|
(40) Смысл - место для вставки ищешь делением пополоам - но он эффективен если массив уже как-то предварительно отсортирован - а если сырой то тот же пузырек
(41) зачем в 1С облака? ) |
|||
46
Дуб
18.06.09
✎
14:29
|
(41) да ты, братец, не одинэсник! ;)
Признавайся, на какую корпорацию работаешь? :) |
|||
47
H A D G E H O G s
18.06.09
✎
14:29
|
(44) Поэтому и Список, а не массив.
|
|||
48
Doomer
18.06.09
✎
14:30
|
(41) Сотрировка это то чему учать в школе на уроках информатики. В крайнем случае 1 курс института.
|
|||
49
H A D G E H O G s
18.06.09
✎
14:30
|
(45) Массив строится с нуля. По имеющемуся массиву.
|
|||
50
Shurjk
18.06.09
✎
14:31
|
(47) А почему список не будет зависеть от размера?
|
|||
51
vde69
18.06.09
✎
14:32
|
(43)(46) это была база для сканирования твердых тел и выгрузки в аутокад, в аутокаде это сделать не удалось, так-как твердые тела лежать в SAT формате, а он не документирован в обьеме достаточным для работы
|
|||
52
H A D G E H O G s
18.06.09
✎
14:33
|
(50) Не надо перевыделять память.
|
|||
53
dss3
18.06.09
✎
14:33
|
(0) В институте, помнится, изучали кучу методов сортировки. Помню названия даже сейчас
- пузырьковая - метод вставки - метод перебора - Шелла (с различными вариациями) - шейкерная - пирамидальная - быстрая Но вот алгоритм помню от силы один-два. Напишу за пару минут. |
|||
54
Ненавижу 1С
гуру
18.06.09
✎
14:34
|
(0) сколько платишь?
|
|||
55
Дядя Васька
18.06.09
✎
14:34
|
Пардон, соврал... Брезенхэм это как круг рисовать, когда только компы начал осваивать сталкивался. По сортировке другой чел...
|
|||
56
Дядя Васька
18.06.09
✎
14:38
|
(48) Попробуй догнать хотя бы это: http://ru.wikipedia.org/wiki/Быстрая_сортировка
То о чем я говорю, раз в 10 сложнее, но, блин, забыл кто автор, не могу найти. |
|||
57
DGorgoN
18.06.09
✎
14:41
|
(0) самый примитивный 10 минут
|
|||
58
Doomer
18.06.09
✎
14:41
|
(56) Быстрая сотрировка это, как я помню, просто сортировка кусками.
|
|||
59
Дядя Васька
18.06.09
✎
14:43
|
(58) Да нихрена там не просто. Есть такой алгоритм, который делит пополам, потом еще раз пополам и т.п. Его понять можно. А есть такие, которые вообще хрен поймешь, но работают втрое быстрее...
|
|||
60
Дядя Васька
18.06.09
✎
14:45
|
13 лет прошло с тех пор как я это проходил, потому не смогу вспомнить чей именно. Но запало. Именно то что есть такие алгоритмы которые не могу я понять. Единственный раз в жизни не воткнул как работает.
|
|||
61
vde69
18.06.09
✎
14:45
|
кстати описаный в (20) метот по вики должен называться "строй и перестраивай"
|
|||
62
svent0vit
18.06.09
✎
14:57
|
(53), во-во, помню пирамидальная мне даже на эказмене попалась
|
|||
63
Doomer
18.06.09
✎
14:57
|
Я сейчас занимаюсь поиском нового сотрудника. Поиск веду среди выпускников ВУЗов. Так вот 70% соискателей не могут написать алгоритм сотрировки за отведенный им 1 час.
Считаю, что это позор для нашего образования. Среди своих одноклассников, уверен, что даже сейчас как минимум 24% справится с этой задачей. А многие из них совсем не программисты. |
|||
64
Деметрио
18.06.09
✎
15:01
|
СЗ.Сортировать(0);
как-то так. я вправду не понимаю, зачем одноэснику алгоритм сортировки. |
|||
65
H A D G E H O G s
18.06.09
✎
15:04
|
(63) Когда я был выпускником - я бы тоже не написал
|
|||
66
NS
18.06.09
✎
15:13
|
Квиксорт, фон-неймана (слияние отрезков), простыми вставками, корпоративную (по дереву)
Все вместе напишу за пол-часа. |
|||
67
NS
18.06.09
✎
15:14
|
Пузырек напишу за скорость наколачивания текста :) То есть минуты скорей всего хватит. Сейчас для теста наколочу...
|
|||
68
dimoff
18.06.09
✎
15:15
|
То что в 38 это пузырек?
|
|||
69
NS
18.06.09
✎
15:16
|
Для а=1 по кол-1 цикл
Для б=а+1 по кол цикл Если м[а]>м[б] Тогда Темп=м[а]; м[а]=м[б]; м[б]=Темп; КонецЦикла КонецЦикла; |
|||
70
NS
18.06.09
✎
15:17
|
(68) Нет, по ходу это простая вставка, она быстрее пузырька. Хотя в худшем случае тоже N^2
|
|||
71
NS
18.06.09
✎
15:18
|
Разница в том что в пузырьке оба цикла в одну сторону, а в простой вставке навстречу друг-другу.
|
|||
72
Stepa86
18.06.09
✎
15:19
|
(63) можно вот такой тестик им дать, вчера наткнулся http://screencast.com/t/zL5enHpj
|
|||
73
asp
18.06.09
✎
15:30
|
я за квиксорт. реально очень быстро.
|
|||
74
ildus
18.06.09
✎
15:30
|
5 секунд
|
|||
75
Pasha
18.06.09
✎
15:34
|
(0) Это школьная задачка... Программисту прикладнику это нафиг не надо.. Пущай над этим низкоуровневые кодеры голову ломают...
|
|||
76
NS
18.06.09
✎
15:35
|
Маленькие массивы быстрее сортируются простой вставкой.
А на больших - что корпоративная, что фон-неймана, что Квиксорт - примерно одинаково. |
|||
77
dimoff
18.06.09
✎
15:35
|
(70) Чуть-чуть быстрее за счет прерывания, по сути то же
|
|||
78
NS
18.06.09
✎
15:39
|
(77) Значительно быстрее. В Делфи есть пример. Как раз сравниваются квиксорт, простая вставка и пузырек. До 50-100 элементов Шелла (модифицированная простая вставка) просто всех дерет. Есно обмен нужно делать в конце (сдвиг и запись), а не менять по каждому сравнению.
|
|||
79
bvn13
18.06.09
✎
15:42
|
(20) тебе не должно быть стыдно!
Когда я в универе учился, нам профессора на лекциях с первого курса твердили, что "умный не тот, кто много знает, а тот, кто знает, где об этом можно прочитать!" (с) А.А. Краюшкин, ВолГМУ |
|||
80
Mikeware
18.06.09
✎
15:48
|
(78) В книге Вирта прямо табличка есть - сравнение этих методов...
|
|||
81
Mikeware
18.06.09
✎
15:49
|
До шкафа идти лень. А в инете книги только в ПДФ и дежавю...
|
|||
82
ildus
18.06.09
✎
15:50
|
ТЗ.Сортировать()
|
|||
83
inse0f
18.06.09
✎
16:50
|
(0) пузырек напишу в блокноте за минуту, мб и быстрее)
|
|||
84
Stillcat
18.06.09
✎
17:00
|
(69)
А теперь за час найди ошибку :) |
|||
85
Иде я
18.06.09
✎
17:03
|
Я месяца за полтора напишу, возможно...
Ну часов так 100-120... |
|||
86
nop
18.06.09
✎
17:03
|
(0) сколько платишь ?
|
|||
87
Stillcat
18.06.09
✎
17:15
|
+ (84)
Это не пузырек, это "простым выбором" получается В пузырьке всегда соседние элементы сравниваются |
|||
88
Sserj
18.06.09
✎
17:31
|
Интересно почему всегда когда пытаются "опустить" 1С-ников заводят разговор о сортировках?
Почему никогда не предлагают сделать обычную кнопку? Только не наследника абстрактного баттона а кнопку с нуля с вызовом всех апеев и самостоятельным репаинтом? Это вроде реально интересней :) |
|||
89
VladZ
18.06.09
✎
17:36
|
(3) "Типо круто" - это когда у тебя остров и пара нефтянных вышек...
А сортировка массива для 1С-ника - баловство! |
|||
90
Вопрос_по_Бух
18.06.09
✎
17:38
|
(89) "Скоро земля отдохнет" Ванга. :)
|
|||
91
mm_84
18.06.09
✎
17:41
|
Самый простой алгоритм я скопирую) так что минута=)
|
|||
92
Вопрос_по_Бух
18.06.09
✎
17:41
|
+(90) это о нефтяных вышках она говорила :)
|
|||
93
ShoGUN
18.06.09
✎
17:43
|
(85)
- За сколько починишь карету? - За день - А за три? - Ну .... можно... - А за неделю? - За неделю? Неее, за неделю не справлюсь. Помощник нужен! (с) "Формула любви" По теме - ну за полчаса примерно - напишу. Помнится на собеседовании во франь примерно за столько написал в 2004 году. |
|||
94
htva
18.06.09
✎
17:51
|
секунд 10 на поиск в есисе
получилось бы как в(5) а вообще массивы лет 10 уже не было необходимости сортироватьт, на собюеседованиях не спрашивали :), а по жизни в бухне и упр учете нах нужно |
|||
95
ShoGUN
18.06.09
✎
17:53
|
(94) У тебя ЕСИС к мозгу подключен? :)
|
|||
96
Новиков
18.06.09
✎
18:03
|
на собеседование в 1С товарища попросили сделать задание: дана строка из цифр. Надо написать функцию, в которую передаешь эту строку из цифр, а на выходе получается строка, в которой все цифры упорядочены по умолчанию. Пользоваться внутренними механизмами платформы 1С для организации сортировки нельзя. Товарищ тада на 4-ом курсе универа учился и как раз сдавал лабы по сортировкам. Налабал за 5 минут каким-то хитропопковым методом и был с радостью принят в 1С :)
|
|||
97
H A D G E H O G s
18.06.09
✎
18:05
|
(88) Там делать нечего.
|
|||
98
Feanor
18.06.09
✎
18:16
|
(96) цифр всего 10, считаем скока в строке каких цифр за 1 проход и выдаем строку. задача ниочем.
|
|||
99
Feanor
18.06.09
✎
18:25
|
+(98)
тз = Новый ТаблицаЗначений; тз.НоваяКолонка("Цифра"); тз.НоваяКолонка("Число"); Для Сч = 0 по 9 Цикл Стр = тз.ДобавитьСтроку(); Стр.Цифра = Строка(Сч); Стр.Число = 0; КонецЦикла; Для Сч = 1 По СтрДлина(ИсхСтр) Цикл ТекСимв = Сред(ИсхСтр,Сч,1); Стр = тз.НайтиСтроку(ТекСимвол, "Цифра"); Стр.Число = Стр.Число + 1; КонецЦикла; ВыхСтр = ""; Для Каждого Стр из тз Цикл Для сч = 1 По Стр.Число Цикл ВыхСтр = ВыхСтр + Стр.Цифра; КонецЦикла; КонецЦикла; Возврат ВыхСтр; //как-то то так |
|||
100
Альберт_Уфа
18.06.09
✎
18:26
|
(100) сто
|
|||
101
NS
18.06.09
✎
18:26
|
(87) Название пузырька знать необязательно, так как на практике он не применяется никогда. Простая вставка, Шелл, Квиксорт.
|
|||
102
MAGician_
18.06.09
✎
18:45
|
Последнее что писал из подобного, это qsort на JavaScript, результат трудов можно удивить на Википедии =)
Потратил примерно 30-40 минут. |
|||
103
Torquader
18.06.09
✎
18:48
|
Ещё есть алгоритмы построения двоичного дерева и упорядочивания этого дерева - очень красивые и быстрые, если придумать, как это дерево хранить в памяти.
P.S. как оно работает, я ещё помню, а вот как оно называется - уже нет. |
|||
104
NS
18.06.09
✎
18:53
|
Я выше писал - корпоративная сортировка.
Дерево представляется Элементарно. Первый |
|||
105
NS
18.06.09
✎
18:54
|
узел 0.
У каждого узла правый потомок Индекс*2+1, Левый - Индекс*2+2 0 1 2 34 56 и т.д. |
|||
106
Torquader
18.06.09
✎
19:05
|
Ещё где-то надо хранить информацию о количестве ветвей, так как дерево не всегда такое красивое и нормализованное, как в примере.
|
|||
107
Immortal
18.06.09
✎
19:06
|
написать - быстро..придумать - посложнее
|
|||
108
Torquader
18.06.09
✎
19:50
|
Иногда, когда пишешь по памяти, делаешь какую-нить ошибку - и всё не работает.
(Особенно в 1С, где c русское и c латинское можно перепутать и потом отлаживать до посинения) |
|||
109
htva
18.06.09
✎
19:53
|
(95) всегда со мной. не изобретаю велосипеды как некоторые
|
|||
110
Rick
18.06.09
✎
20:02
|
(0) сразу вспоминается .. у нас по "структурам и алгоритмам обработки данных" была тетенька-препод .. она 3 лекции вроде пыталась продемонстрировать работу метода "пузырька" .. но так и не справилась ))))))))))))))))Зато потоку было весело ..
|
|||
111
b_ru
18.06.09
✎
20:02
|
пузырек - ну минута
qsort - если без справочника вспоминать минту так 20-30 думаю займет. Со справочником в 5 минут уложился :) Какую-нить экзотику, вроде пирамидальной сортировки, или там слияний без справочника просто не напишу (ну во всяком случае за вменяемый промежуток времени) Зато знаю какую-когда имеет смысл применять и почему так :) |
|||
112
Lama12
18.06.09
✎
20:10
|
10 минут. Метод шелла или пузырек.
Час - рекурсией. Естественно без доп литературы и источников информации. |
|||
113
NS
19.06.09
✎
00:47
|
(106) Хранится только размер сортируемого массива. Как и в любой другой сортировке. И этот массив автоматом по приведенной выше формуле представляется в виде бинарного дерева.
|
|||
114
NS
19.06.09
✎
00:49
|
(111) Слияний (фон-неймана) один из самых простых N LN N, легко придумывается самостоятельно, достаточно только знать принцип.
|
|||
115
Said_We
22.06.09
✎
15:17
|
Ну лет пять назад на 1С квиксорт для ТЗ навоял. Получил по вермени примерно тоже самое что и ТЗ.Сортировать(); - даже медленнее чуть чуть.
Только в квиксорте сортировка начинается с начала списка, а я всегда начинал с середины. В итоге если список сортирован в обратном порядке, то в прямом получалось тоже быстро. А вообще по скокрости не все алгортимы сравнивать можно однозначно. Типа вот этот способ всегда быстрее чем вот этот. Тот же квиксорт иногда дает результат медленнее некоторые чем другие, но на определенных данных... Скорость определить иногда крайне просто - число итераций и есть скорость + выделение динамической памяти если с привязкой к компу... Вот сай |
|||
116
Said_We
22.06.09
✎
15:17
|
Вот сайт хороший и которым я пользовался.
http://algolist.manual.ru/ |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |