Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Dmitry Sumsky
662
Dmitry Sumsky 2016.03.12 18:23 

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

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

Vitaly Muzichenko
3850
Vitaly Muzichenko 2016.03.12 20:57  
Дмитрий:

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

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

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

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

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

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

Vitaly Muzichenko
3850
Vitaly Muzichenko 2016.03.12 22:19  
Alexey Volchanskiy:

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

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

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

Dmitry Fedoseev
43471
Dmitry Fedoseev 2016.03.12 22:56  
Vitaly Muzichenko:

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

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

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

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

Vitaly Muzichenko
3850
Vitaly Muzichenko 2016.03.12 23:21  
Dmitry Fedoseev:

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

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

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

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

Dmitry Fedoseev
43471
Dmitry Fedoseev 2016.03.12 23:32  
Vitaly Muzichenko:

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

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

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

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

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

Vitaly Muzichenko
3850
Vitaly Muzichenko 2016.03.12 23:38  
Dmitry Fedoseev:

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

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

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

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

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

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

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

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

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