Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 25.03.2012, 11:03
Аватар для Раед
''
Отправить личное сообщение для Раед Посмотреть профиль Найти все сообщения от Раед
 
Регистрация: 11.12.2011
Сообщений: 636

Сообщение от Rootpassword
НО ЗАЧЕМ?
Как зачем? В массиве есть несколько элементов, иногда они из него удаляются, и я хочу, чтобы при удалении все остальные элементы сдвигались. Сделал так:
var arr=[5,8,7,65,64,842,8,42,8,41,6,8,777];
alert(arr.length);
delete arr[4];
delete arr[6];
delete arr[1];
arr = arr.sort(function(a,b){return (b==undefined ? -1 : 0)});
alert(arr.length);
var x = arr.length;
while (arr[--x]==undefined) arr.pop();
alert(arr.length);
Ответить с цитированием
  #22 (permalink)  
Старый 25.03.2012, 11:14
Server
Отправить личное сообщение для Rootpassword Посмотреть профиль Найти все сообщения от Rootpassword
 
Регистрация: 26.09.2011
Сообщений: 252

Раед, значения undefined в твою функцию сортировки даже не будут переданы, ибо сортируются всегда отдельно.
Во вторых, прямой обход массива -это порядок n. Сравни с сортировкой, которая O(n log n), хотя тут вообще порядок будет n, так как ничего по сути не сортируется + вызовы функции.
Это что? Оптимизация?

Последний раз редактировалось Rootpassword, 25.03.2012 в 11:17.
Ответить с цитированием
  #23 (permalink)  
Старый 25.03.2012, 11:22
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Раед
В массиве есть несколько элементов, иногда они из него удаляются, и я хочу, чтобы при удалении все остальные элементы сдвигались.
http://alljs.ru/articles/array/manipulations#splice
Ответить с цитированием
  #24 (permalink)  
Старый 25.03.2012, 20:02
Аватар для antonM
Кандидат Javascript-наук
Отправить личное сообщение для antonM Посмотреть профиль Найти все сообщения от antonM
 
Регистрация: 11.08.2011
Сообщений: 103

Сообщение от Иваннн
почему у массива нельзя найти медиану(я понимаю середину массива) у любого массива (объект.constructor==Array) есть свойвство length
Медиана != Середина массива.
Медиана = середина распределения частот. Лучше всего подходит для характеристики расположения центра распределения для интервальной или относительной шкалы.
Хороший график для понимания:

или


На сколько адекватна будет медиана для такого массива?: [15, "d", 1, "a", 4, "b"]. Кстати стандартный метод, числовую часть сортирует неправильно -> 1,15,4,a,b,d

Последний раз редактировалось antonM, 25.03.2012 в 20:05.
Ответить с цитированием
  #25 (permalink)  
Старый 25.03.2012, 20:40
Аватар для Раед
''
Отправить личное сообщение для Раед Посмотреть профиль Найти все сообщения от Раед
 
Регистрация: 11.12.2011
Сообщений: 636

Сообщение от Rootpassword
прямой обход массива -это порядок n. Сравни с сортировкой, которая O(n log n), хотя тут вообще порядок будет n, так как ничего по сути не сортируется + вызовы функции.
Из этих слов не понял ровным счётом ничего
Ответить с цитированием
  #26 (permalink)  
Старый 25.03.2012, 20:42
Аватар для Раед
''
Отправить личное сообщение для Раед Посмотреть профиль Найти все сообщения от Раед
 
Регистрация: 11.12.2011
Сообщений: 636

Сообщение от Rootpassword
ибо сортируются всегда отдельно.
это как, а почему же тогда всё работает?
Ответить с цитированием
  #27 (permalink)  
Старый 25.03.2012, 20:57
Server
Отправить личное сообщение для Rootpassword Посмотреть профиль Найти все сообщения от Rootpassword
 
Регистрация: 26.09.2011
Сообщений: 252

Сообщение от Раед
это как, а почему же тогда всё работает?
Твоя функция сортировки всегда возвращает 0, т.е. эквивалентность для сортировки, поскольку в function(a,b){return (b==undefined ? -1 : 0)}
undefined сюда не передаются никогда-так уж сортировка устроена в js(да и не только в js, кстати).
Поскольку она утверждает, что все неважно, функция вызывается ровно n-1 раз.
Ответить с цитированием
  #28 (permalink)  
Старый 28.03.2012, 12:23
Аватар для Раед
''
Отправить личное сообщение для Раед Посмотреть профиль Найти все сообщения от Раед
 
Регистрация: 11.12.2011
Сообщений: 636

Rootpassword,
Сообщение от Rootpassword
ровно n-1 раз.
Во первых, что такое n
Во вторых, то что undefined в ф-ию не попадают, это я уже понял. Но почему же они оказываются в конце массива?
Ответить с цитированием
  #29 (permalink)  
Старый 28.03.2012, 12:49
Server
Отправить личное сообщение для Rootpassword Посмотреть профиль Найти все сообщения от Rootpassword
 
Регистрация: 26.09.2011
Сообщений: 252

n, N-всегда количество данных.

Потому что сортируются отдельно, без функции, и записываются в конец. Все !undefined сортируются функцией, и потом все undefined просто добавляются в конец массива.
Ответить с цитированием
  #30 (permalink)  
Старый 31.03.2012, 00:58
Аватар для Раед
''
Отправить личное сообщение для Раед Посмотреть профиль Найти все сообщения от Раед
 
Регистрация: 11.12.2011
Сообщений: 636

Сообщение от Rootpassword
потом все undefined просто добавляются в конец массива
То есть можно просто:
arr.sort()
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите про Метод 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