Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 07.01.2011, 08:01
Аспирант
Отправить личное сообщение для JSTalker Посмотреть профиль Найти все сообщения от JSTalker
 
Регистрация: 29.06.2009
Сообщений: 92

Сообщение от Gvozd Посмотреть сообщение
JSTalker,
у вас сильные пробелы в базовых знаниях

function func1(funcname, funcparam){
funcname(funcparam);
}
func1(alert,'olo-lo');
вы вообще не о том.
Kolyaj
почему лишние? Это не функциональный литерал (там как бы аргументы подразумеваются).

Последний раз редактировалось JSTalker, 07.01.2011 в 08:21.
Ответить с цитированием
  #12 (permalink)  
Старый 07.01.2011, 08:55
Аспирант
Отправить личное сообщение для JSTalker Посмотреть профиль Найти все сообщения от JSTalker
 
Регистрация: 29.06.2009
Сообщений: 92

просьба своим языком объяснить этот алгоритм

И как он применяется в JS. А то я что то допереть никак ни могу
Ответить с цитированием
  #13 (permalink)  
Старый 07.01.2011, 09:24
Аспирант
Отправить личное сообщение для JSTalker Посмотреть профиль Найти все сообщения от JSTalker
 
Регистрация: 29.06.2009
Сообщений: 92

Цитата:
Быстрая сортировка использует стратегию «разделяй и властвуй». Шаги алгоритма таковы:
1. Выбираем в массиве некоторый элемент, который будем называть опорным элементом. С точки зрения корректности алгоритма выбор опорного элемента безразличен. С точки зрения повышения эффективности алгоритма выбираться должна медиана, но без дополнительных сведений о сортируемых данных её обычно невозможно получить. Известные стратегии: выбирать постоянно один и тот же элемент, например, средний или последний по положению; выбирать элемент со случайно выбранным индексом.
2. Операция разделения массива: реорганизуем массив таким образом, чтобы все элементы, меньшие или равные опорному элементу, оказались слева от него, а все элементы, большие опорного — справа от него. Обычный алгоритм операции:
2.1 Два индекса — l и r, приравниваются к минимальному и максимальному индексу разделяемого массива соответственно.
2.2 Вычисляется индекс опорного элемента m. (??? а п.1 что делал?)
2.3 Индекс l последовательно увеличивается до m до тех пор, пока l-й элемент не превысит опорный.
2.4 Индекс r последовательно уменьшается до m до тех пор, пока r-й элемент не окажется меньше либо равен опорному.
2.5 Если r = l — найдена середина массива — операция разделения закончена, оба индекса указывают на опорный элемент.
2.6 Если l < r — найденную пару элементов нужно обменять местами и продолжить операцию разделения с тех значений l и r, которые были достигнуты. Следует учесть, что если какая-либо граница (l или r) дошла до опорного элемента, то при обмене значение m изменяется на r-й или l-й элемент соответственно.
3. Рекурсивно упорядочиваем подмассивы, лежащие слева и справа от опорного элемента.
4. Базой рекурсии являются наборы, состоящие из одного или двух элементов. Первый возвращается в исходном виде, во втором, при необходимости, сортировка сводится к перестановке двух элементов. Все такие отрезки уже упорядочены в процессе разделения.
вся соль разделения массива заключается в подчеркнутой строчке?

Алгоритм 2.N выполняется только 1 раз для целого массива? Далее он выполняется для левых и правых подмассивов?

Как все это с sort(foo(a,b)) в JS стыкуется?
a,b - это что за элементы относительно вышеописанного?
просто любые 2 элемента, а в функции показано условие?
Ответить с цитированием
  #14 (permalink)  
Старый 07.01.2011, 10:15
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от JSTalker
почему лишние?
Потому что вызываете функцию foo и результат её выполнения передаёте в sort. А нужно передавать в sort саму функцию foo, а не результат её выполнения.

Какая вам разница, как реализована сортировка в JS?
Ответить с цитированием
  #15 (permalink)  
Старый 07.01.2011, 12:18
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от JSTalker
a,b - это что за элементы относительно вышеописанного?
это элементы которые сравниваюстя между собой
2.3 и 2.4 содержат операции сравнения элементов(не индексов)
Ответить с цитированием
  #16 (permalink)  
Старый 07.01.2011, 13:06
Аспирант
Отправить личное сообщение для JSTalker Посмотреть профиль Найти все сообщения от JSTalker
 
Регистрация: 29.06.2009
Сообщений: 92

Сообщение от Kolyaj Посмотреть сообщение
Потому что вызываете функцию foo и результат её выполнения передаёте в sort. А нужно передавать в sort саму функцию foo, а не результат её выполнения.

Какая вам разница, как реализована сортировка в JS?
Что за вопросы?
Большая.
Ответить с цитированием
  #17 (permalink)  
Старый 12.01.2011, 10:43
Кандидат Javascript-наук
Отправить личное сообщение для Иваннн Посмотреть профиль Найти все сообщения от Иваннн
 
Регистрация: 31.05.2010
Сообщений: 106

О примере JStalkera
Не могу понять логику действий:
-почему у массива нельзя найти медиану(я понимаю середину массива) у любого массива (объект.constructor==Array) есть свойвство length; или обсуждение вышло за рамки метда sort()?
- подчеркнутого пункта - когда проверяется условие I<r (здесь сравнивается значение элемента, а не индексы, иначе нет смысла в слепую менять значения, ориенируясь только на их индексы в массиве.), я думаю проверяется при каждой итерации п.2.3 и п.2.4 (как указал Gvozd).
Ответить с цитированием
  #18 (permalink)  
Старый 24.03.2012, 23:43
Аватар для Раед
''
Отправить личное сообщение для Раед Посмотреть профиль Найти все сообщения от Раед
 
Регистрация: 11.12.2011
Сообщений: 636

Почитал-почитал, и всё-таки не могу понять этот sort. Например, какую ф-ию передавать ему, если я хочу убрать из массива все элементы со значением undefined.
Ответить с цитированием
  #19 (permalink)  
Старый 25.03.2012, 09:46
Интересующийся
Отправить личное сообщение для filan Посмотреть профиль Найти все сообщения от filan
 
Регистрация: 02.09.2011
Сообщений: 6

Раед,
Если Вы хотите _убрать_ из массива элементы, причем здесь _сортировка_ массива?
Ответить с цитированием
  #20 (permalink)  
Старый 25.03.2012, 10:19
Server
Отправить личное сообщение для Rootpassword Посмотреть профиль Найти все сообщения от Rootpassword
 
Регистрация: 26.09.2011
Сообщений: 252

Сообщение от Раед
Почитал-почитал, и всё-таки не могу понять этот sort. Например, какую ф-ию передавать ему, если я хочу убрать из массива все элементы со значением undefined.
Ну если вы отсортируете массив, то все такие элементы окажутся в конце. Удалять потом, конечно, будет проще- НО ЗАЧЕМ?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите про Метод attachEvent() sanhai Events/DOM/Window 4 19.05.2010 14:47
Как узнать у какого объекта вызван метод. Scalar Events/DOM/Window 4 26.03.2010 11:10
Что можно и нужно прочитать про валидацию? Amateur Общие вопросы Javascript 5 09.03.2010 11:41
Назначить на обработчик события метод обьекта Logo Общие вопросы Javascript 11 20.06.2009 23:40
Добавить свой метод к элементу alekciy Events/DOM/Window 6 16.02.2009 19:29