Подскажите, по сортировке 2-х мерного массива

 

Скажите, возможно ли отсортировать 2-х мерный массив по двум столбцам, как это делается в excel?

По одному столбцу есть стандартная функция. А как быть, если нужна сортировка по двум столбцам? 

 
Дмитрий:

Скажите, возможно ли отсортировать 2-х мерный массив по двум столбцам, как это делается в excel?

По одному столбцу есть стандартная функция. А как быть, если нужна сортировка по двум столбцам? 

Разницы нет, сортировка идет по первому измерению, но не сортирует строковые параметры.  
//--- сортировка массива DataArray[][] по первому измерению (по возрастанию значений)
   ArraySort(DataArray,WHOLE_ARRAY,0,MODE_ASCEND);
 
Дмитрий:

Скажите, возможно ли отсортировать 2-х мерный массив по двум столбцам, как это делается в excel?

По одному столбцу есть стандартная функция. А как быть, если нужна сортировка по двум столбцам? 

Свою сортировку надо писать, гугл в помощь http://www.google.com/search?q=алгоритмы+сортировки+массивов&oq=Алгоритмы+сортировки&sourceid=chrome&ie=UTF-8

 
Alexey Volchanskiy:

Свою сортировку надо писать, гугл в помощь http://www.google.com/search?q=алгоритмы+сортировки+массивов&oq=Алгоритмы+сортировки&sourceid=chrome&ie=UTF-8

А какой смысл? Если массив двухмерный, значит значения в нём завязаны.

В таком случае достаточно сделать сортировку по первому измерению. Если значения не завязаны, то можно создать два одномерных и не парится.  

 
Vitaly Muzichenko:

А какой смысл? Если массив двухмерный, значит значения в нём завязаны.

В таком случае достаточно сделать сортировку по первому измерению. Если значения не завязаны, то можно создать два одномерных и не парится.  

Если в первом столбце попадаются одинаковые значения, например символ, то хорошо бы дополнительно провести сортировку по второму столбцу. Редко, но бывает такая задача.

Функций таких в эмкуле нет, надо собственными силами. 

 
Dmitry Fedoseev:

Если в первом столбце попадаются одинаковые значения, например символ, то хорошо бы дополнительно провести сортировку по второму столбцу. Редко, но бывает такая задача.

Функций таких в эмкуле нет, надо собственными силами. 

Скорее всего проще сразу собирать правильный массив, чем потом делать дополнительные манипуляции.

Если попадёт где нибудь строковое значение, то сортировка так-же будет не совсем правильная.

 
Vitaly Muzichenko:

Скорее всего проще сразу собирать правильный массив, чем потом делать дополнительные манипуляции.

Если попадёт где нибудь строковое значение, то сортировка так-же будет не совсем правильная.

Зачем делать самому, если может сделать железная машина? К тому же символ, это только в качестве примера, а что там на смом деле может быть никто не знает, может быть что угодно.

Строковые значения прекрасно сортируются - по алфавиту, как в школе учили. 

Да и делается это не сильно сложно.

 
Dmitry Fedoseev:

Зачем делать самому, если может сделать железная машина? К тому же символ, это только в качестве примера, а что там на смом деле может быть никто не знает, может быть что угодно.

Строковые значения прекрасно сортируются - по алфавиту, как в школе учили. 

Да и делается это не сильно сложно.

Когда-то пробовал сортировать строковые как учили в школе, но они не сортировались, может уже что изменили в MQ4, но раньше было нельзя, только числовые. Больше не пробовал - нет нужды.
 
Vitaly Muzichenko:

А какой смысл? Если массив двухмерный, значит значения в нём завязаны.

В таком случае достаточно сделать сортировку по первому измерению. Если значения не завязаны, то можно создать два одномерных и не парится.  

Почему завязаны? Это же не хеш-таблица. Массив double arr[5][8] это матрица из 5 массивов по 8 элементов, никак они не связаны между собой. Конечно, на самом деле физически это одномерный массив, представленный в виде матрицы.

Или топикстартер имеет в виду что-то другое, а не двумерный массив, так как почему-то сравнивает с Exel'ом 

 
Двухмерный массив это как раз таблица - прямоугольная, плоская. Размер по первому измерению это количество строк, по второму - количество столбцов.
 
Dmitry Fedoseev:
Двухмерный массив это как раз таблица - прямоугольная, плоская. Размер по первому измерению это количество строк, по второму - количество столбцов.
Так и я об этом, таблица или 2-х мерная матрица. И для сортировки по любому измерению, кроме нулевого, надо писать свой алгоритм. Либо копировать это измерение в одномерный массив, там сортировать средствами MQL и потом копировать обратно.