Re: Shuffling a linked list
- From: Richard Heathfield <rjh@xxxxxxxxxxxxxxx>
- Date: Sat, 30 Dec 2006 04:14:27 +0000
Richard Harter said:
On Fri, 29 Dec 2006 20:52:43 +0000, Richard Heathfield<snip>
<rjh@xxxxxxxxxxxxxxx> wrote:
Just use the standard shuffling algorithm, mildly adapted for lists.
Point one of your pointers, P1, to the first unprocessed item in the list,
item I. (There are 32 - I unprocessed items.) Pick a random number in the
range 1 to 32 - I. Counting the item pointed to by P1 as 1, keep counting
along the list, using P2 to point, until you hit the random number you
generated. Swap the data at P1 with the data at P2. Now move P1 to point
to the next item on the list. Iterate until done. (When P1 is NULL -
because it fell off the end of the list - you're done.)
Given the small actual value of n (32) that's probably as good as
anything. However it's O(n**2).
I nearly disagreed, but of course you're right - it comes from bumping P2
along the list to find the Rth element, once per iteration. Blech. Okay, I
withdraw the suggestion.
--
Richard Heathfield
"Usenet is a strange place" - dmr 29/7/1999
http://www.cpax.org.uk
email: rjh at the above domain, - www.
.
- References:
- Shuffling a linked list
- From: A. Farber
- Re: Shuffling a linked list
- From: Richard Heathfield
- Re: Shuffling a linked list
- From: Richard Harter
- Shuffling a linked list
- Prev by Date: Re: reading BIOS dump
- Next by Date: Re: How to program an enigma cipher?
- Previous by thread: Re: Shuffling a linked list
- Next by thread: Re: Shuffling a linked list
- Index(es):
Relevant Pages
|