| 
 | 
| 
 
Разбить ArrayList на максимально равные по количеству элементов части 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Всем привет! Нужен алгоритм, который делит большой ArrayList на несколько мелких ArrayList так, чтобы полученные мелкие ArrayList были максимально равны по количеству элементов. Например: 100 / 5 = 20 + 20 + 20 + 20 + 20 101 / 5 = 20 + 20 + 20 + 20 + 21 13 / 4 = 3 + 3 + 3 + 4 ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 17.06.2019, 13:28 | 
  
  
  
   | 
||
| 
 
Разбить ArrayList на максимально равные по количеству элементов части 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  MolasarВсем привет! Нужен алгоритм, который делит большой ArrayList на несколько мелких ArrayList так, чтобы полученные мелкие ArrayList были максимально равны по количеству элементов. Например: 100 / 5 = 20 + 20 + 20 + 20 + 20 101 / 5 = 20 + 20 + 20 + 20 + 21 13 / 4 = 3 + 3 + 3 + 4 100р на телефон и я напишу Вам эту лабораторку. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 17.06.2019, 14:02 | 
  
  
  
   | 
||
| 
 
Разбить ArrayList на максимально равные по количеству элементов части 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  MolasarВсем привет! Нужен алгоритм, который делит большой ArrayList на несколько мелких ArrayList На сколько частей? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 17.06.2019, 14:08 | 
  
  
  
   | 
||
| 
 
Разбить ArrayList на максимально равные по количеству элементов части 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Если количество частей заранее не определено, то в цикле делить длину большого массива на переменное число частей и смотреть дробную часть от полученного значения.  Если она близка к нулю или к единице, то найденное число делителя это подходящее значение. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 17.06.2019, 14:13 | 
  
  
  
   | 
||
| 
 
Разбить ArrayList на максимально равные по количеству элементов части 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  SQL2008Если количество частей заранее не определено, то в цикле делить длину большого массива на переменное число частей и смотреть дробную часть от полученного значения.  Если она близка к нулю или к единице, то найденное число делителя это подходящее значение. Количество частей заранее неизвестно. А если не близко к 0 или 1, например: 13 / 5 = 2,6 Как получить оптимальный вариант: 3 + 3 + 3 + 2 + 2? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 17.06.2019, 14:24 | 
  
  
  
   | 
||
| 
 
Разбить ArrayList на максимально равные по количеству элементов части 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Molasar... Количество частей заранее неизвестно. А если не близко к 0 или 1, например: 13 / 5 = 2,6 Как получить оптимальный вариант: 3 + 3 + 3 + 2 + 2? Обычный, самый тупой, алгоритм диззиринга из графики: 2 (trunc(2.6) ошибка 0.6) + 3 (trunc(2.6+0.6) ошибка 2.6+0.6-3=0.2) + 2 (ошибка 2.6+0.2-3=0.8) + 3 (ошибка 0.4) + 3 (ошибка 0) 2 + 3 + 2 + 3 + 3 IMHO ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 17.06.2019, 14:40 | 
  
  
  
   | 
||
| 
 
Разбить ArrayList на максимально равные по количеству элементов части 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  MolasarSQL2008Если количество частей заранее не определено, то в цикле делить длину большого массива на переменное число частей и смотреть дробную часть от полученного значения. Количество частей заранее неизвестно. А если не близко к 0 или 1, например: 13 / 5 = 2,6 Как получить оптимальный вариант: 3 + 3 + 3 + 2 + 2? Используйте алгоритм Брезенхема для прямой (из (0;0) в (N;K), где N — длина масива, K — кол-во частей) ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 17.06.2019, 14:41 | 
  
  
  
   | 
||
| 
 
Разбить ArrayList на максимально равные по количеству элементов части 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  MolasarВсем привет! Нужен алгоритм, который делит большой ArrayList на несколько мелких ArrayList так, чтобы полученные мелкие ArrayList были максимально равны по количеству элементов. Например: 100 / 5 = 20 + 20 + 20 + 20 + 20 101 / 5 = 20 + 20 + 20 + 20 + 21 13 / 4 = 3 + 3 + 3 + 4 условия не очень понятны. почему 13/4 хуже чем 13/2(6+7) или 13/3(5+4+4)? Постановка задачи - загадчная. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 17.06.2019, 14:50 | 
  
  
  
   | 
||
| 
 
Разбить ArrayList на максимально равные по количеству элементов части 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Самое загадочное - это ответ Т.к. ArrayList наиболее правильно бьется просто на 13-ть ArrayList'ов И тогда все получившиеся ArrayList'ы будут не просто максимально, а совершенно точно "равны по количеству элементов" ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 17.06.2019, 14:55 | 
  
  
  
   | 
||
| 
 
Разбить ArrayList на максимально равные по количеству элементов части 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Leonid KudryavtsevСамое загадочное - это ответ Т.к. ArrayList наиболее правильно бьется просто на 13-ть ArrayList'ов И тогда все получившиеся ArrayList'ы будут не просто максимально, а совершенно точно "равны по количеству элементов" наверняка неявно подразумевается что минимальное количество элементов в каждом из разбитых 2 ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 17.06.2019, 15:03 | 
  
  
  
   | 
||
| 
 
Разбить ArrayList на максимально равные по количеству элементов части 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  llemingLeonid KudryavtsevСамое загадочное - это ответ Т.к. ArrayList наиболее правильно бьется просто на 13-ть ArrayList'ов И тогда все получившиеся ArrayList'ы будут не просто максимально, а совершенно точно "равны по количеству элементов" наверняка неявно подразумевается что минимальное количество элементов в каждом из разбитых 2 тогда почему бы все не бить на 2 или 2+1? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 17.06.2019, 15:08 | 
  
  
  
   | 
||
| 
 
Разбить ArrayList на максимально равные по количеству элементов части 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Озвериннаверняка неявно подразумевается... я бы скорее подумал. что подразумевается кол-во частей sqrt( ArrayList.count ) ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 17.06.2019, 15:18 | 
  
  
  
   | 
||
| 
 
Разбить ArrayList на максимально равные по количеству элементов части 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  ОзверинMolasarВсем привет! Нужен алгоритм, который делит большой ArrayList на несколько мелких ArrayList так, чтобы полученные мелкие ArrayList были максимально равны по количеству элементов. Например: 100 / 5 = 20 + 20 + 20 + 20 + 20 101 / 5 = 20 + 20 + 20 + 20 + 21 13 / 4 = 3 + 3 + 3 + 4 условия не очень понятны. почему 13/4 хуже чем 13/2(6+7) или 13/3(5+4+4)? Постановка задачи - загадчная. Изначально неизвестно на какое количество частей нужно делить ArrayList. Для простоты будем говорить про массив. Размер массива тоже неизвестен. 13/4 не хуже чем 13/2(6+7). Если делитель 4, то должно быть 3 + 3 + 3 + 4 или 4 + 3 + 3 + 3. Если делитель 2, то 6+7 ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 17.06.2019, 15:29 | 
  
  
  
   | 
||
| 
 
Разбить ArrayList на максимально равные по количеству элементов части 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Leonid KudryavtsevСамое загадочное - это ответ Т.к. ArrayList наиболее правильно бьется просто на 13-ть ArrayList'ов И тогда все получившиеся ArrayList'ы будут не просто максимально, а совершенно точно "равны по количеству элементов" Приходит Object[N] его нужно обработать на K-потоках. Для этого необходимо, чтобы каждому потоку досталась максимально равная часть работы, т.е. часть массива. Вот поэтому и делим. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 17.06.2019, 15:55 | 
  
  
  
   | 
||
| 
 
Разбить ArrayList на максимально равные по количеству элементов части 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Жесть. А про пул потоков не слышали? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 17.06.2019, 16:16 | 
  
  
  
   | 
||
| 
 
Разбить ArrayList на максимально равные по количеству элементов части 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  забыл никЖесть. А про пул потоков не слышали? Слышал и??? Как вы раздадите одну задачу на пул потоков???? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 17.06.2019, 16:23 | 
  
  
  
   | 
||
| 
 
Разбить ArrayList на максимально равные по количеству элементов части 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Molasar, очевидно разобью на маленькие части. один элемент массива - одна задача ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 17.06.2019, 16:26 | 
  
  
  
   | 
||
| 
 
Разбить ArrayList на максимально равные по количеству элементов части 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  забыл никMolasar, очевидно разобью на маленькие части. один элемент массива - одна задача А если данные нужно сохранить в БД. Например, 100000 строк. Вы будете под запись каждой строки выделять поток? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 17.06.2019, 16:35 | 
  
  
  
   | 
||
| 
 
Разбить ArrayList на максимально равные по количеству элементов части 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  MolasarLeonid KudryavtsevСамое загадочное - это ответ Т.к. ArrayList наиболее правильно бьется просто на 13-ть ArrayList'ов И тогда все получившиеся ArrayList'ы будут не просто максимально, а совершенно точно "равны по количеству элементов" Приходит Object[N] его нужно обработать на K-потоках. Для этого необходимо, чтобы каждому потоку досталась максимально равная часть работы, т.е. часть массива. Вот поэтому и делим. наверное, это задача решается немного иначе. 1. Во-первых, вы должны исходить из некой пропускной способности. Допустим, 10 объектов в секунду. 2. Во-вторых, вы должны знать максимально эффективное кол-во потоков, которое имеет смысл пускать на сервере(если все измеряется потоками). Делается это через нагрузочное тестирование. 3. В-третьих, просто следить за пропускной способностью и добавлять потоки, когда требуется до n потоков. В общем случае, вам может подойти нечто вроде disruptor`а - этий кольцевой массив событий, который обрабатывает несколько консьюемров, причем могут сразу пачкой(если логика позволяет). ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 17.06.2019, 16:38 | 
  
  
  
   | 
||
| 
 
Разбить ArrayList на максимально равные по количеству элементов части 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Molasarзабыл никMolasar, очевидно разобью на маленькие части. один элемент массива - одна задача А если данные нужно сохранить в БД. Например, 100000 строк. Вы будете под запись каждой строки выделять поток? так это вы все еще про запись в бд что ли? Не поборол? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 17.06.2019, 16:39 | 
  
  
  
   | 
||
| 
 
Разбить ArrayList на максимально равные по количеству элементов части 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Molasarзабыл никMolasar, очевидно разобью на маленькие части. один элемент массива - одна задача А если данные нужно сохранить в БД. Например, 100000 строк. Вы будете под запись каждой строки выделять поток? Начинаешь задавать правильные вопросы. К тем пунктам что добавил Озверин, ты должен решить задачу написав функцию, которая принимает на вход int(число элементов в массиве) и вычисляет другой int(количество элементов в партитишене), учитывая коээфициенты - 1) количество потоков в системе 2) CPU или IO-bound таск. При CPU-bound коэффийиент должен быть строго 1, при IO - от 2-5 обычно, но надо мерять на реальной нагрузке 3) минимальное количество элементов на один таск, ибо если у тебя мало элементов, то нету особого смысла параллелить. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 17.06.2019, 16:47 | 
  
  
  
   | 
||
| 
 
Разбить ArrayList на максимально равные по количеству элементов части 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Molasar....Вот поэтому и делим. просто циклично кидать в ArrayList'ы по одной штуке Был на входе набор элементов 1,2,3,4,5,6,7 нужно побить на 3-и массива, просто циклически в массивы и кидаете массив A: 1, 4, 7 массив B: 2, 5, не хватило массив C: 3, 6, не хватило в чем проблема - мне не понятно. Можно "размазать" 21909803 . Можно заранее посчитать, какая будет длина короткого массива truncate( length / threads_count ), сколько будет "перебравших +1" ( length % threads_count ), сколько будет "коротких" ( threads - length % threads_count). Если запросом, то опять таки: SELECT rownum mod threads_count as n, my_table.* FROM my_table Задача не стоящая выяденного яйца. IMHO ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 17.06.2019, 16:53 | 
  
  
  
   | 
||
| 
 
Разбить ArrayList на максимально равные по количеству элементов части 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Leonid KudryavtsevСамое загадочное - это ответ Т.к. ArrayList наиболее правильно бьется просто на 13-ть ArrayList'ов И тогда все получившиеся ArrayList'ы будут не просто максимально, а совершенно точно "равны по количеству элементов" 5 баллов! ИМХО просто шедеврально. И главное, укладывается в "условия задачи". Но можно пойти еще дальше. Зачем нам 13-ть ArrayList'ов, зачем память засирать. Лучше пусть будет 1. Таким, образом, мы пришли к выводу, что задачу решать вообще не имеет смысла. Можно считать ее решенной уже на этапе постановки. Зачем подниматься на 3-ий этаж и спускаться на первый, если по условиям задачи нужно быть на первом. Можно просто не подниматься. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 21.06.2019, 04:23 | 
  
  
  
   | 
||
| 
 
Разбить ArrayList на максимально равные по количеству элементов части 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  llemingLeonid KudryavtsevСамое загадочное - это ответ Т.к. ArrayList наиболее правильно бьется просто на 13-ть ArrayList'ов И тогда все получившиеся ArrayList'ы будут не просто максимально, а совершенно точно "равны по количеству элементов" наверняка неявно подразумевается что минимальное количество элементов в каждом из разбитых 2 Нельзя ли уточнить. А то так придешь к врачу, он тебе так неявно не то лекарство даст и неявно откинешься. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 21.06.2019, 04:24 | 
  
  
  
   | 
||
| 
 | 

start [/forum/topic.php?fid=59&msg=39827235&tid=2121226]:  | 
    0ms | 
get settings:  | 
    9ms | 
get forum list:  | 
    12ms | 
check forum access:  | 
    3ms | 
check topic access:  | 
    3ms | 
track hit:  | 
    55ms | 
get topic data:  | 
    9ms | 
get forum data:  | 
    2ms | 
get page messages:  | 
    50ms | 
get tp. blocked users:  | 
    1ms | 
| others: | 12ms | 
| total: | 156ms | 

| 0 / 0 | 

На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даете согласие с использованием данных технологий.