Cache': техника группировки
Категория реферата: Рефераты по информатике, программированию
Теги реферата: тезис, доклад по географии на тему
Добавил(а) на сайт: Kapitolina.
Предыдущая страница реферата | 1 2 3 4 5 6 7 | Следующая страница реферата
. s map("Nfigure",map("figure",figure))=figure
После этого в локальной переменной map имеем отображение значений цветов и фигур на числа, причем числа благодаря использованию индексной сортировки в O(map("color",color)) и O(map("figure",figure)) упорядочены в том же порядке. После этого, используя отображения значений на числа, можем провести широкую группировку:
n ncolor,nfigure
s i=""
f s i=$O(^group(i)) q:i="" d
. s color=$p(^group(i),"~",1)
. s figure=$p(^group(i),"~",2)
. s ncolor=map("color",color)
. s nfigure=map("figure",figure)
. s count=$p(^group(i),"~",3)
. s group(ncolor,nfigure)=count+$G(group(ncolor,nfigure),0)
q
Объединив образцы кода вместе, получим функцию, которая выполняет широкую группировку. Отметим, что никакой оптимизации здесь не приводилось, а получение данных, попадающих на группирование, не всегла такая простая операция, как просто проход по глобали. И, чтобы не выполнять ее дважды, имеет смысл в реальном коде сохранить выборку во временной глобали. И использовать глобали для группирования и отображения группирующих значений на числа. Поскольку данных может оказаться столь много, что они просто не поместятся в области данных процесса.
При выводе сгруппированных данных следует, конечно же, помнить, что группировали мы не значения, а их номера, поэтому используем построенное ранее отображение:
WriteWideGrouped()
d WideGroup()
n color,ncolor,figure,nfigure,count,cf
s cf="group"
f s cf=$Q(@cf) q:cf="" d
. s ncolor=$qs(cf,1)
. s nfigure=$qs(cf,2)
. s count=@cf
. s color=map("Ncolor",ncolor)
. s figure=map("Nfigure",nfigure)
. w color,?15,figure,?30,count,!
Рекомендуем скачать другие рефераты по теме: виды шпор, в контакте сообщения.
Предыдущая страница реферата | 1 2 3 4 5 6 7 | Следующая страница реферата