igraph-help
[Top][All Lists]

## Re: [igraph] find highest degrees

 From: Gábor Csárdi Subject: Re: [igraph] find highest degrees Date: Sat, 20 Feb 2010 10:35:14 +0100

```On Fri, Feb 19, 2010 at 11:36 PM, John Lapeyre <address@hidden> wrote:
>> I thought about adding an option to return the degrees themselves, but
>> I couldn't find a way to do that without putting a conditional in the
>> innermost loop..
>
>  No thats not correct. But, it would be a good thing to
> pass two pointers, one for the degrees and one for the
> order.  (and either one could be NULL if the user does not
> want it) But igraph_indheap_init_array initializes from a C
> array, not an igraph_vector, so it is not possible to return
> the degrees without an extra copy. It seems like currently
> the only way to do this within heap.c is to access the data
> in the vector struct, which goes around the vector interface.

VECTOR(v) gives you the underlying C array of a VECTOR.

> But a function in vector.c like this might be useful:
>
>  vector_copy_data(igraph_vector_t *v, igraph_real_t *data, size_t n)

There is a function called igraph_vector_copy_to(), that does almost
the same, the only difference is that it copies the whole vector.

Btw. I think it is simpler to sort the two vectors and then merge
them. This involves copying them, of course, but the heap approach
copies as well, and I guess that the C library quicksort will be
faster than the heap-sort. Even if it is not faster, it is surely
easier to implement, you just need to

1. copy the two vectors
2. sort them
3. merge them (this needs a vector_union_sorted function), but this is
trivial to write.

Gabor

> It would use memcpy to copy n bytes FROM the array in
> the vector struct TO memory starting at the location given by data.
>
> This would allow a function like this
>
>  igraph_indheap_init_vector, that initializes the heap from
> data in a vector.
>
> John
>
>
>
> _______________________________________________
> igraph-help mailing list
> http://lists.nongnu.org/mailman/listinfo/igraph-help
>

--