|
Алгоритмика Об алгоритмах вообще; методы, обсуждения способов решения |
18.06.2009, 23:10
|
#1
|
Терабайт исходников
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений (для 6,051 пользователей)
|
Сортировка координат
туплю...как можно просортировать объекты типа, имеющие x, y и z?
типа есть:
60 73 29
-50 20 48
-100 82 4
-100 29 4
-100 29 6
а надо:
-100 29 4
-100 29 6
-100 82 4
-50 20 48
60 73 29
|
(Offline)
|
|
18.06.2009, 23:31
|
#2
|
|
Ответ: Сортировка координат
что-то я не понимаю каким образом ты хочешь сортировать
если по растоянию то сортируй по ключу D = x*x+y*y+z*z
|
|
|
18.06.2009, 23:53
|
#3
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Сортировка координат
60 73 29
-50 20 48
-100 82 4
-100 29 4
-100 29 6
-100 29 4
-100 29 6
-100 82 4
-50 20 48
60 73 29
Вариант номер один:
Data 60, 73, 29
Data -50, 20, 48
Data -100, 82, 4
Data -100, 29, 4
Data -100, 29, 6
Global XS%=3
Global YS%=5
Dim p(XS,YS)
Function debug_matrix()
Local s$
For y=1 To YS
s=""
For x=1 To XS
s=s+LSet(p(x,y),5)
Next
DebugLog s
Next
End Function
Function PrevColCor%(z%,i%)
If z=1 Return True
If p(z-1,i)=p(z-1,i+1)
Return True
EndIf
Return False
End Function
For y=1 To YS
For x=1 To XS
Read p(x,y)
Next
Next
debug_matrix()
DebugLog ""
;====================
For z=1 To XS
For j=2 To YS
For i=1 To YS-j+1
If p(z,i)>p(z,i+1) And PrevColCor(z,i)
For r=z To XS
Local t%=p(r,i)
p(r,i)=p(r,i+1)
p(r,1+i)=t
Next
EndIf
Next
Next
Next
;====================
debug_matrix()
DebugLog ""
WaitKey()
End
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
19.06.2009, 00:01
|
#4
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Сортировка координат
Второй способ с ключом (как сказал Джимон), но ключ составляется по-другому:
D=(x-min)*(R^2)+(x-min)*(R^1)+(x-min)*(R^0)
аналогично, например RGB-системе, где
min - миниальное возможное значение координаты (для rgb =0)
R - разброс значений (для rgb =256)
Далее производится сортировка ключей и их декомпозиция на координаты.
Метод требовательный к памяти но при должной оптимизации довльно быстрый.
Вообще говоря, ТЗ весьма размыто.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
19.06.2009, 00:05
|
#5
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Сортировка координат
функцию
Function PrevColCor%(z%,i%)
If z=1 Return True
If p(z-1,i)=p(z-1,i+1)
Return True
EndIf
Return False
End Function
в первом методе можно выродить до проверки тождества
p(z-1,i)=p(z-1,i+1)
если матрица слева имеет буферный столбец забитый одинаковыми значениями (в том же б3д можно было сдлать именно так).
Также, используемую в семпле сортировку методом пузырька можно заменить на другую, исходя из априорных данных об упорядоченности.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
21.06.2009, 00:28
|
#6
|
Терабайт исходников
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений (для 6,051 пользователей)
|
Ответ: Сортировка координат
-------------
Последний раз редактировалось Mr_F_, 21.06.2009 в 01:44.
Причина: разобрался - спасибо первому методу импера
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 02:27.
|