summaryrefslogtreecommitdiffhomepage
path: root/examples/priority.c
diff options
context:
space:
mode:
authorTyge Løvset <[email protected]>2020-09-02 11:07:52 +0200
committerTyge Løvset <[email protected]>2020-09-02 11:07:52 +0200
commitd3bb64882aa00c9c1b3056d74796b59fc2180f0e (patch)
treee4db986a486e3f84ac5cc9177f5feb76ba91070e /examples/priority.c
parent721254982e82292d321e7d98480ac6ec22b4a2c6 (diff)
downloadSTC-modified-d3bb64882aa00c9c1b3056d74796b59fc2180f0e.tar.gz
STC-modified-d3bb64882aa00c9c1b3056d74796b59fc2180f0e.zip
Rewrote cpqueue to a real adapter class. Added some missing functions in cvec, clist, cmap. Added c_init() and c_destroy() generic algoritms on containers.
Diffstat (limited to 'examples/priority.c')
-rw-r--r--examples/priority.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/examples/priority.c b/examples/priority.c
index 7dfff7da..2451d2d2 100644
--- a/examples/priority.c
+++ b/examples/priority.c
@@ -1,34 +1,35 @@
#include <stdio.h>
#include <time.h>
+#include <stc/cvec.h>
#include <stc/cpqueue.h>
#include <stc/cmap.h>
#include <stc/crandom.h>
declare_cvec(i, int64_t);
-declare_cvec_pqueue(i, >); // min-heap (increasing values)
+declare_cpqueue(i, >, cvec); // min-heap (increasing values)
int main() {
- size_t N = 100000000;
+ size_t N = 10000000;
crand_rng64_t pcg = crand_rng64_init(time(NULL));
crand_uniform_i64_t dist = crand_uniform_i64_init(pcg, 0, N * 10);
- cvec_i heap = cvec_init;
+ cpqueue_i heap = cpqueue_i_init();
// Push ten million random numbers to priority queue
for (int i=0; i<N; ++i)
- cvec_i_pqueue_push(&heap, crand_uniform_i64(&dist));
+ cpqueue_i_push(&heap, crand_uniform_i64(&dist));
// push some negative numbers too.
- c_push(&heap, cvec_i_pqueue, c_items(-231, -32, -873, -4, -343));
+ c_push(&heap, cpqueue_i, c_items(-231, -32, -873, -4, -343));
for (int i=0; i<N; ++i)
- cvec_i_pqueue_push(&heap, crand_uniform_i64(&dist));
+ cpqueue_i_push(&heap, crand_uniform_i64(&dist));
// Extract the hundred smallest.
for (int i=0; i<100; ++i) {
- printf("%zd ", cvec_i_pqueue_top(&heap));
- cvec_i_pqueue_pop(&heap);
+ printf("%zd ", *cpqueue_i_top(&heap));
+ cpqueue_i_pop(&heap);
}
- cvec_i_destroy(&heap);
+ cpqueue_i_destroy(&heap);
}