сортировка двумерного массива по второму измерению - страница 2

 

Эй, Гордон, спасибо за предупреждение, читая этот код, я вспомнил, что у меня уже есть фрагмент кода, который просматривает корзину, чтобы найти самую большую проигравшую сделку, я могу использовать его в сочетании с его клоном в обратном порядке, чтобы найти самого большого победителя, если победитель больше, чем проигравший, тогда я могу закрыть каждую из них. Это будет работать для того, что мне нужно. Иногда, просто спать над этим - лучший генератор кода из всех. Черт, я, наверное, мог бы написать это за ночь. Не так много модификаций. Мне не нужно закрывать их все сразу. Мы проходим через это в первый раз, затем на следующем тике или свече мы можем пройти через это снова, или, как я говорил раньше, у меня есть другая функция, которая срабатывает в то же время, и что-то вроде этого было бы удобно. Я могу просто встроить его в кодировку этой функции.

Спасибо, что открыли мне глаза, Гордон.

 

Если вы хотите отсортировать массивы по цене, почему бы вам просто не загрузить цену в первое измерение, а билет - во второе...... затем вы можете отсортировать их обычным способом.

 

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

 
gordon:

Независимо от того, как вы хотите это назвать, первым измерением в двумерном массиве является вектор arr_name[0,1,...,n][0], поэтому технически первая скобка содержит первое измерение; это также вектор, который будет отсортирован с помощью ArraySort(). Из книги:

Раз уж мы затронули тему ArraySort(), я упомяну 2 недокументированные особенности, которые я обнаружил со временем (и буду рад, если кто-нибудь подтвердит или поправит меня...?):

  1. Если некоторые элементы в первом измерении идентичны, они не обязательно сохранят свой порядок. Очевидно, это должно быть задокументировано, если это "по проекту", иначе я бы считал это "ошибкой".
  2. OrderSort() не работает с 4D массивами (возвращает ошибку 4053). Опять же, это должно быть задокументировано, но этого нет.
Извините за запоздалый ответ, ребята... Многое помешало... Уверяю вас, я очень ценю ваши ответы.
FWIW вот мои ответы (в режиме "спама" :( ) :
- На одномерных массивах вопрос не возникает. В 2D, 3D, 4D массивах самая левая пара скобок всегда является первым измерением, это верно, Гордон?
 
cameofx:
- На одномерных массивах вопрос не возникает. В двумерных, трехмерных, четырехмерных массивах крайняя левая пара скобок всегда является первым измерением, верно ли это, Гордон?

Да.

 
gordon:

Независимо от того, как вы хотите это назвать, первым измерением в двумерном массиве является вектор arr_name[0,1,...,n][0], поэтому технически первая скобка содержит первое измерение; это также вектор, который будет отсортирован с помощью ArraySort(). Из книги:

Раз уж мы затронули тему ArraySort(), я упомяну 2 недокументированные особенности, которые я обнаружил со временем (и буду рад, если кто-нибудь подтвердит или поправит меня...?):

  1. Если некоторые элементы в первом измерении идентичны, они не обязательно сохранят свой порядок. Очевидно, это должно быть задокументировано, если это "по проекту", иначе я бы считал это "ошибкой".
  2. OrderSort() не работает с 4D массивами (возвращает ошибку 4053). Опять же, это должно быть задокументировано, но этого нет.
Извините за запоздалый ответ, ребята... Многое помешало... Уверяю вас, я очень ценю ваши ответы.
К вашему сведению, вот мои ответы:
- На одномерном массиве вопрос не возникает. В 2D, 3D, 4D массивах крайняя левая пара скобок всегда является первым измерением. Это и мое понимание.
int    a[50];       // A one-dimensional array of 50 integers.
double m[7][50];    // Two-dimensional array of seven arrays,
                    //each of them consisting of 50 integers
Но когда я смотрю на это объяснение. Как это описано: "Двумерный массив из семи массивов, каждый из которых состоит из 50 целых чисел " Поразмыслив над этим и вашими ответами... Это должно быть
ошибочное объяснение, потому что оно предполагает, что 50 целых чисел - это скорее размер строки/члена данных, а 7 - столбца/заголовка. Это заставило меня поверить (ошибочно).
что крайнее правое - это строка/член, размер которой мы должны/можем удобно изменить...
- Я благодарен вам за то, что вы поделились своей находкой, Гордон. К сожалению, тестирование - это роскошь для меня в наши дни... Я могу только периодически пользоваться компьютером и интернетом (это сложно).
Даже тестирование на мертвом графике оказывается сложной задачей... :( . Отсюда и мое иногда "искаженное понимание". TBH, я в основном полагаюсь на память и рекомендации... (извините...).

PS : упс... не знал, что предыдущее сообщение попало внутрь. Я его отредактировал.
 
cameofx:
[...] Это, должно быть, ошибочное объяснение, поскольку оно предполагает, что 50 целых чисел - это скорее размер строки/члена данных, а 7 - столбца/заголовка.

Я не уверен, на что это намекает, но независимо от этого, крайний левый - это первое измерение. Большая часть документации - это перевод с русского языка, часто не очень хороший перевод, так что, возможно, это один из тех случаев. Столбец/строка - это просто метафора; она облегчает нам представление о массиве, но не имеет никакого отношения к фактической реализации. Является ли первое измерение "строкой" или "столбцом", зависит от вас...

 
1005phillip:


Я рассматриваю индексацию и определение размеров массива в стандартной манере электронных таблиц... Строка-столбец (мнемоника "римско-католическая").

Одномерный массив: MyArray[RowNumber-1].

2D массив: MyArray[RowNumber-1][ColumnNumber-1]

3D массив: MyArray[RowNumber-1][ColumnNumber-1][Worksheet-1] ....

Это то, как я себе это представлял. Ссылка, которую я цитировал относительно первого измерения, сбила меня с толку... (см. сообщение выше). Так что мы логически не можем изменить размер ColumnNumber и/или WorksheetNumber
и/или номер книги... только номер строки. Который является самой левой парой скобок в 2D, 3D и 4D массивах.
 
cameofx:
Поэтому мы логически не можем изменить размер [...].

Верно.

 
gordon:

Я не уверен, что это означает, но независимо от этого, крайнее левое является первым измерением. Большая часть документации - это перевод с русского языка, часто не очень хороший перевод, так что, возможно, это один из тех случаев. Столбец/строка - это просто метафора; она облегчает нам представление о массиве, но не имеет никакого отношения к фактической реализации. Является ли первое измерение "строкой" или "столбцом", зависит от вас...

Да. К сожалению, многие из нас - я уверен, что говорю от имени многих новичков... - слишком часто полагаются на существующую документацию...

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