Скачать MetaTrader 5

Сортировка массива содержащего в т. ч. одинаковые данные.

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Ваш брокер не поддерживает мобильные MetaTrader 5? Попроси приобрести их!
slba
82
slba 2006.10.24 15:45 
Допустим массив arr[] содержит данные 0,0,0,0,1,2,3,4,5,1,1,1,1,5,5,5,5 в результате в массиве arr1[] необходимо получить данные 0,1,2,3,4,5. Т. е. массив содержащий различные между собой и одинаковые между собой данные преобразоать (отсортировать) в массив содержащий только различные между собой данные. Размерность массива не принципиальна. В моем случае двумерный массив [0]-данные [1]-индекс.
Ronen Kagan
807
Ronen Kagan 2006.10.24 16:10  
Вот я тут что-то наляпал, должно работать... :)
neverUsedValue любое значение которое не может встречаться никогда в передаваемом массиве...

int start()
  {
int arr[]={0,0,0,0,1,2,3,4,5,1,1,1,1,5,5,5,5};
int size=arrangeArray(arr,-1);
for(int i=0;i<size;i++)
Print(arr[i]);
   return(0);
  }
//+------------------------------------------------------------------+
 
int arrangeArray(int& arr[],int neverUsedValue)
{
int size=ArraySize(arr);
int counter=0;
for(int i=0;i<size;i++)
   if (arr[i]!=neverUsedValue)
      {   
      arr[counter]=arr[i];
      for(int j=counter+1;j<size;j++)
          if (arr[j]==arr[counter])arr[j]=neverUsedValue;
      counter++;
      }
 
ArrayResize(arr,counter);
ArraySort(arr);
return (counter);
}
Юрий Макаров
358
Юрий Макаров 2006.10.24 20:28  
Вот так вроде лучше (и быстрее)
int start()
{
   int arr[] = {0,0,0,0,1,2,3,4,5,1,1,1,1,5,5,5,5};
   int size = arrangeArray(arr);
   for(int i = 0; i < size; i++) Print(i," ",arr[i]);
 
}
 
int arrangeArray(int& arr[])
{
   int size = ArraySize(arr);
   int counter = 1;
   for(int i = 1; i < size; i++)
   {
      bool newItem = true;
      for(int j = 0; j < counter; j++)
      if (arr[i] == arr[j]) 
      {
         newItem = false;
         break;
      }
      if (newItem)
      {
         arr[counter] = arr[i];
         counter++;
      }
   }
   ArrayResize(arr,counter);
   ArraySort(arr);
   return (counter);
}
Ronen Kagan
807
Ronen Kagan 2006.10.24 21:05  
Mak писал (а):
Вот так вроде лучше (и быстрее)
....
Однако и так хорошо.. а теперь вопрос на засыпку... К чему эта функция???
Dmitry Fedoseev
42905
Dmitry Fedoseev 2006.10.24 21:16  
Ronen:
Mak писал (а):
Вот так вроде лучше (и быстрее)
....
Однако и так хорошо.. а теперь вопрос на засыпку... К чему эта функция???

Наверно парень курсовик пишет:-)
slba
82
slba 2006.10.25 05:56  
Integer писал (а):
Ronen:
Mak писал (а):
Вот так вроде лучше (и быстрее)
....
Однако и так хорошо.. а теперь вопрос на засыпку... К чему эта функция???

Наверно парень курсовик пишет:-)
Для меня может и курсовик ( третий месяц освоения МТ4 ранеееееее к программированию только к ассемблеру как электронщик)
Но тем не менее Спасибо за ответ.
А задача моя пока состоит в анализе одновременной реакции некоторых индикаторов и тайм-серий на положительные мне события по истории. Результатом реакции является создаваемый массив, который сопоставляется с текущей ситуацией на каждом тике, создавая дополнительный параметр и если хотите фильтр. И если в массиве до 1000 и более значений, из которых только третья часть различаются между собой, зачем мне другими одинаковыми значениями нагружать компьютер.
Алексей Тарабанов
7200
Алексей Тарабанов 2016.04.12 21:43  
Вычурно, как-то... Можно гораздо проще. 
Alexey Viktorov
6847
Alexey Viktorov 2016.04.13 06:05  
Алексей, ну зачем ты застыдил человека? Не все ведь успели посмотреть...
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий