Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBA
Войти
Регистрация
Восстановить пароль
 
d7d1cd
218 / 148 / 52
Регистрация: 30.06.2011
Сообщений: 1,455
Завершенные тесты: 1
1

Быстро вычислить количество элементов массива

29.09.2016, 08:52. Просмотров 272. Ответов 5
Метки нет (Все метки)

Приветствую. Есть массив, содержащий около 50000 элементов (целые числа). Значения элементов массива могут повторяться. Необходимо определить количество элементов данного массива без учета повторяющихся элементов.

Например, если элементов всего 5: 15, 17, 15, 14, 15, то решением задачи будет число 3, так как элемент 15 повторяется 2 раза.
На данный момент реализовал такое решение:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Dim Array(50000) as Long
Dim temp(50000) as Long
Dim Last, i
Last = 0
    
For i = 1 To 50000
    For j = 1 To Last
        If Array(i) = temp(j) Then Exit For
    Next j
        
    If j > LastRow Then
        Last = Last + 1
        temp(Last) = Array(i)
    End If
Next i
Может быть можно реализовать более быстрое решение?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.09.2016, 08:52
Ответы с готовыми решениями:

Вычислить количество элементов массива, меньших С
В одномерном массиве, состоящем из nвещественных элементов, вычислить: 1) количество элементов...

Вычислить произведение и количество отрицательных элементов массива
вычислить произведение и количество отрицательных элементов массива

Вычислить количество положительных элементов массива, значения которых не превышают 17
Вычислить количество положительных элементов в целочисленном массиве M(3x4 элементов), значения...

Вычислить количество элементов массива, чьи значения лежат в интервале (-200;25)
Простая задача на вычисление количества элементов, как правильно записать условие на VBA?...

Как вычислить сумму модулей и количество нечётных элементов чётных индексов одномерного массива
помогите пожалуйста)задание такое:Вычислить сумму модулей и количество нечётных элементов чётных...

5
Shersh
Заблокирован
29.09.2016, 09:09 2
d7d1cd, диапазон чисел известен?
Если да, то -
Visual Basic
1
2
3
4
5
6
REDim temp(minArray to maxArray) as Long 'можно AS BYTE, если есть проблем с оперативкой,
For i = 1 To 50000
  if temp(array(i))=0then
    temp(array(i))=1:Count=Count+1
  endif
Next i
0
d7d1cd
218 / 148 / 52
Регистрация: 30.06.2011
Сообщений: 1,455
Завершенные тесты: 1
29.09.2016, 09:39  [ТС] 3
Shersh, спасибо. Ваш метод работает быстрее, чем мой. При формировании массива я определяю минимальное и максимальное значения. А существует ли быстрый способ определить эти значения из массива?
0
Shersh
Заблокирован
29.09.2016, 09:50 4
Цитата Сообщение от d7d1cd Посмотреть сообщение
А существует ли быстрый способ определить эти значения из массива?
Сделайте третий массив с уникальными значениями -
Visual Basic
1
2
3
4
5
6
7
8
REDim temp(minArray to maxArray) as Long 'можно AS BYTE, если есть проблем с оперативкой,
REDim temp2(1 To 50000) as Long
For i = 1 To 50000
  if temp(array(i))=0then
    temp(array(i))=1:Count=Count+1:temp2(Count)=array(i)
  endif
Next i
redim preserve temp2(1 to count) 'необязательно...
0
d7d1cd
218 / 148 / 52
Регистрация: 30.06.2011
Сообщений: 1,455
Завершенные тесты: 1
29.09.2016, 10:03  [ТС] 5
Цитата Сообщение от Shersh Посмотреть сообщение
Сделайте третий массив с уникальными значениями
Так ведь все равно нужно до вычисления знать минимальный и максимальный элементы... А надо сделать подсчет без них или сначала быстро их вычислить.
0
Hugo121
6441 / 2502 / 447
Регистрация: 19.10.2012
Сообщений: 7,503
29.09.2016, 10:14 6
Загнать в цикле всё в коллекцию (с ключём) или словарь, посмотреть её/его размер.
0
29.09.2016, 10:14
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.09.2016, 10:14

Вычислить сумму и количество отрицательных элементов и количество нулевых элементов
Помогите пожалуйста))Задание такое:Вычислить сумму и количество отрицательных элементов и...

Найти количество элементов массива значения которых лежат между средним арифметическим элементов массива и
Найти количество элементов массива A значения которых лежат между средним арифметическим элементов...

Найти количество четных элементов массива и количество нечётных
дан двумерный массив. Найти количество четных элементов массива и количество нечётных (самих...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.