Снова нужна ваша мысль.
Нужно придумать, как сделать сортировку двумерного массива по столбцам. Принцип такой: сортируем строки по первому столбцу, если несколько ячеек первого столбца имеют одинаковые значения, то эти строки сортируем по второму столбцу. Если и во вторых столбцах этих строк есть одинаковые значения, то сортируем по третьему. И т.д. Все данные строчные, но разных типов (буквы/цифры и т.д.). Это схоже с сортировкой по дате в формате гггг-мм-дд: Сначала идут одного года, которые отсортированы по месяцам, каждый из которых отсортирован по дням
Пример:
a 2 54
b 23 6
b 1 a
b 1 78
a 1 13
a 2 f
Сначала выводим все строки с "а", потом все строки с "b". Затем сортируем строки внутри "a": сначала с цифрой 1, потом с цифрой 2. Аналогично с третьим столбцом
должно получиться:
a 1 13
a 2 54
a 2 f
b 1 78
b 1 a
b 23 6
Т.е. полная сортировка по всем столбцам. Кстати, количество ячеек в строках может быть разным
Сортировка 2D-массива
-
- developer
- Сообщения: 257
- Зарегистрирован: 03 янв 2014, 19:37
- Версия LabVIEW: 2016
- Откуда: Украина, Киев
- Контактная информация:
Re: Сортировка 2D-массива
Не претендую на оптимальность, набросал со скуки что первое в голову пришло.
колдооооовствооооо! (С)
-
IvanLis
- guru
- Сообщения: 5467
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 88 раз
Re: Сортировка 2D-массива
Конечно с множеством ограничений и допущений (например, когда если в одной ячейке будут сразу и цифры и буквы или в ячейках одного столбца будет разное количество букв), но для конкретного примера работает Если вечером будет время попробую через рекурсию сделать.GT21 писал(а):Т.е. полная сортировка по всем столбцам.
Здесь Вы конечно погорячились, так не может, да и не массив это вовсе получитсяGT21 писал(а):Кстати, количество ячеек в строках может быть разным
Но готов отказаться от своих слов, если приведете мне конкретные примеры и языки программирования, где подобное возможно .
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
IvanLis
- guru
- Сообщения: 5467
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 88 раз
Re: Сортировка 2D-массива
Так не проканает, т.к. при сортировке String, "2" будет идти после "15", а "5" после "30". Раньше даже Windows файлы сортировал как String, это потом научился нормально сортировку по имени делать.AlexanderKonoval писал(а):Не претендую на оптимальность, набросал со скуки что первое в голову пришло.
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
IvanLis
- guru
- Сообщения: 5467
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 88 раз
Re: Сортировка 2D-массива
От этого не избавились:Blackman писал(а):А вот так проканает? :)
Пример автор не очень удачный привел.IvanLis писал(а):при сортировке String, "2" будет идти после "15", а "5" после "30"
вот: Да и размер кластера при использовании функции Array To Cluster программно (на сколько мне известно) нельзя задать, только вручную. Можно конечно задать сразу с запасом, но это "костыль", который может "выстрелить".
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- leader
- Сообщения: 932
- Зарегистрирован: 17 янв 2016, 15:02
- Награды: 1
- Версия LabVIEW: 6.1,8.5,20
Re: Сортировка 2D-массива
Для этого и был создан OpenG LabVIEW Data Tools, который позволяет не вспоминать о подобных "костылях" :)Да и размер кластера при использовании функции Array To Cluster программно (на сколько мне известно) нельзя задать, только вручную. Можно конечно задать сразу с запасом, но это "костыль", который может "выстрелить".
На закуску пример сортировки 2х-мерного массива строк с использованием преобразования одномерного массива строк неограниченного размера (гипербола) в вариант-кластер.
- Вложения
-
- user
- Сообщения: 74
- Зарегистрирован: 29 апр 2016, 09:22
- Версия LabVIEW: 8.6
- Благодарил (а): 1 раз
- Поблагодарили: 1 раз
- Контактная информация:
Re: Сортировка 2D-массива
Не совсем точно написал, не отсутствуют, а пустые. Например, в первой строке одна ячейка с данными и три пустые, а во второй все четыре ячейки - с даннымиIvanLis писал(а):Здесь Вы конечно погорячились, так не может, да и не массив это вовсе получитсяGT21 писал(а):Т.е. полная сортировка по всем столбцам.
И дополню: в каждой ячейке данные только одной категории (слово/число/точка)
К сожалению OpenG нет и установить его нет возможности. Да и, честно говоря, я не знаю, что это и как с этим работатьBlackman писал(а):Для этого и был создан OpenG LabVIEW Data Tools, который позволяет не вспоминать о подобных "костылях" :)Да и размер кластера при использовании функции Array To Cluster программно (на сколько мне известно) нельзя задать, только вручную. Можно конечно задать сразу с запасом, но это "костыль", который может "выстрелить".
На закуску пример сортировки 2х-мерного массива строк с использованием преобразования одномерного массива строк неограниченного размера (гипербола) в вариант-кластер.
кажется ваш пример отлично работаетIvanLis писал(а):Конечно с множеством ограничений и допущений (например, когда если в одной ячейке будут сразу и цифры и буквы или в ячейках одного столбца будет разное количество букв), но для конкретного примера работаетGT21 писал(а):Т.е. полная сортировка по всем столбцам.
Последний раз редактировалось GT21 02 ноя 2016, 09:05, всего редактировалось 3 раза.
LabVIEW 8.6
-
IvanLis
- guru
- Сообщения: 5467
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 88 раз
Re: Сортировка 2D-массива
Пустая ячейка будет стоять на первом месте после сортировки.GT21 писал(а):Не совсем точно написал, не отсутствуют, а пустые. Например, в первой строке одна ячейка с данными и три пустые, а во второй все четыре ячейки - с данными
И дополню: в каждой ячейке данные только одной категории (слово/число/точка)
Поиграйтесь с доступными примерами, будут проблемы пишите.
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 5 Ответы
- 990 Просмотры
-
Последнее сообщение seromax
-
- 2 Ответы
- 394 Просмотры
-
Последнее сообщение Sergey Puzanov