|
Сортировать массив, сравнивая 4ре числа | ☑ | ||
---|---|---|---|---|
0
Pentosh
24.09.15
✎
16:06
|
Доброго времени суток.
Не могу сообразить, а сделать надо. Нужно отсортировать массив по возрастанию, он заполнен характеристиками номенклатуры, вида "720, 600, 89, белый". Мну нужно, взять первые 2 числа, и по ним отсортировать. Чтобы: Это 720 240 стало 250 150 1350 720 460 240 250 150 720 240 900 600 720 600 720 600 900 600 460 240 1350 720 Вот все ни как не могу понять, как сортировать по 2м значениям. |
|||
1
butterbean
24.09.15
✎
16:10
|
делай таблицу с числовыми колонками, ее потом сортируй
|
|||
2
Pentosh
24.09.15
✎
16:29
|
(1) Как вариант возможно.
А если именно используя массив и сортировку "от руки"? |
|||
3
Pentosh
24.09.15
✎
16:47
|
Мин = 0;
Для i = 0 По МассивХарактеристик.ВГраница() Цикл Мин = i; Для j = i + 1 ПО МассивХарактеристик.ВГраница() Цикл //Ищем минимальный элемент в массиве ХарШиринаЧислоМассив1 = ПолучитьЧислоХарактеристикиШирина(МассивХарактеристик[Мин].НаименованиеХарактеристики); ХарДлинаЧислоМассив1 = ПолучитьЧислоХарактеристикиДлина(МассивХарактеристик[Мин].НаименованиеХарактеристики); ХарШиринаЧислоМассив2 = ПолучитьЧислоХарактеристикиШирина(МассивХарактеристик[j].НаименованиеХарактеристики); ХарДлинаЧислоМассив2 = ПолучитьЧислоХарактеристикиДлина(МассивХарактеристик[j].НаименованиеХарактеристики); Если ХарШиринаЧислоМассив2 <= ХарШиринаЧислоМассив1 И ХарДлинаЧислоМассив2 <= ХарДлинаЧислоМассив1 Тогда Мин = j; КонецЕсли; КонецЦикла; Если МассивХарактеристик[Мин] = МассивХарактеристик[i] Тогда //Если мин. элемент массива = первому элементу неотс. части массива, то пропускаем. Продолжить; КонецЕсли; Смена = МассивХарактеристик[i]; //Производим замену элементов массива. МассивХарактеристик[i] = МассивХарактеристик[Мин]; МассивХарактеристик[Мин] = Смена; КонецЦикла; Вроде хорошо, но не совсем 720 2500 1450 600 1450 900 2040 600 2040 600 1450 2500 Вот так получается в итоге. |
|||
4
Pentosh
24.09.15
✎
16:51
|
(1) Попробовал, вытащил числа их характеристики и записал их в ТЗ, получилось не то что хотел, по 1-й колонке нормально отсортировал, по 2-й нет.
|
|||
5
DTXyupyup
24.09.15
✎
16:54
|
(3) Ужс
(4) Показывай как вытаскиваешь. Все же просто должно быть. Сортируешь как? |
|||
6
Pentosh
24.09.15
✎
17:14
|
(5) А что там ужасного то?)
В запросе, Левым соединением цеплял РС Значения свойств, вледелец характеристика и от туда свойство Ширина и Длина брал. Сортировал "УПОРЯДОЧИТЬ ПО Ширина, Длина" Пробовал и ТЗ с результатом, то тож не то дало. |
|||
7
Garykom
гуру
24.09.15
✎
17:19
|
(0) невозможно "сортировать по 2м значениям"
можно по очереди сначала по одному отсортировать, потом по другому или можно взять некую функцию от этих двух значений, получить 3-е значение, и отсортировать по нему |
|||
8
DTXyupyup
24.09.15
✎
17:26
|
(6) Не понял. Сортировка ТЗ платформы не работает должным образом?
И да, каким образом ты по двум значениям хочешь сортировать? |
|||
9
Pentosh
25.09.15
✎
08:14
|
(8) Так в этом и вопрос, что нужно по двум, вот и пытаюсь найти способ.
Стандартные сортируют так: По наименованию 1200 1200 1400 2500 1300 600 2080 600 240 50 250 400 720 600 По числам 240 50 250 400 720 600 1200 1200 1300 600 2080 600 1400 2500 как то так:) (примерно передал) |
|||
10
Апош
25.09.15
✎
08:16
|
спорим, ты взял массив оттуда, где тебе отсортируют правильно без извращений?
|
|||
11
Pentosh
25.09.15
✎
09:27
|
(10) Да, так и есть, видать тупняк напал, частенько такое бывает :)
Проблема решена, можно расходится. Спасибо |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |