Сортировка массивов - страница 2

 
Irtron:
ArraySort, к счастью, дает такую прекрасную возможность:
int ArraySort(& array[], int count=WHOLE_ARRAY, int start=0, int sort_dir=MODE_ASCEND)
Сортировка числовых массивов по первому измерению. Массивы-таймсерии не могут быть отсортированы.

Можно использовать это свойство сортировки по первому измерению примерно вот так:

Массив может быть любого типа, кроме bool. Для строкового массива нужно будет явно преобразовывать индексы в строки.

Ничего не понял. Там переменные которые не понятно откуда.

Есть такая задача.

Есть допустим 2 буфера по 4 элемента

string symbols[4] ;

double prices[4]; 

 

Помогите пожалуйста её решить.

Надо чтобы prices отсортировались, но прежние индексы остались.

Тоесть можно сказать что индексы буферов связаны. 

 
eevviill:

Ничего не понял. Там переменные которые не понятно откуда.

Есть такая задача.

Есть допустим 2 буфера по 4 элемента

string symbols[4] ;

double prices[4]; 

 

Помогите пожалуйста её решить.

Надо чтобы prices отсортировались, но прежние индексы остались.

Тоесть можно сказать что индексы буферов связаны. 

Сделал так.

 

long buffers_index_copy[];
long buf_index_copy3[];
ArrayResize(buffers_index_copy,symols_chek_counter);
ArrayResize(buf_index_copy3,symols_chek_counter);
ArrayCopy(buffers_index_copy,volumes);
ArrayCopy(buf_index_copy3,volumes);
ArraySort(volumes,WHOLE_ARRAY,0,MODE_DESCEND);




for(int i=0;i<symols_chek_counter;i++)
{
if(volumes[i]==0) continue;
for(int bs=0;bs<symols_chek_counter;bs++)
{
if(volumes[i]==buffers_index_copy[bs])
{
...
buffers_index_copy[bs]=0;
break;
}
}
}

     
ArrayCopy(volumes,buf_index_copy3);
 

У меня несколько иное решение.

Создаем двухмерный массив, например: double Asort[ 4000, 2]

В первое измерение  Asort[ i, 0] = записываем сортируемое значение.

Во второе помещаем ссылку  Asort[ i, 1] = i  это индекс в исходном массиве.

После сортировки, индекс в исходном массиве.узнаем из второго измерения

Причина обращения: