Changeset a0b7ef5
- Timestamp:
- Apr 7, 2026, 11:22:40 AM (19 hours ago)
- Branches:
- master
- Children:
- d6ce310
- Parents:
- bb9897c
- File:
-
- 1 edited
-
doc/theses/mike_brooks_MMath/list.tex (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
doc/theses/mike_brooks_MMath/list.tex
rbb9897c ra0b7ef5 737 737 The @i@ fields in each node are initialized from @0..n-1@. 738 738 These @i@ values are then shuffled in the nodes, and the @i@ value is used to represent an indirection to that node for insertion. 739 hence, the nodes are inserted in random order and removed in the same random order.739 Hence, the nodes are inserted in random order and removed in the same random order. 740 740 $\label{p:Shuffle}$ 741 \begin{c ++}742 for ( i; n ) @nodes[i].i = i@; $\C {// indirection}$741 \begin{cfa} 742 for ( i; n ) @nodes[i].i = i@; $\C[3.25in]{// indirection}$ 743 743 shuffle( nodes, n ); $\C{// random shuffle indirects within nodes}$ 744 744 745 745 while ( CONTINUE ) { 746 746 for ( i; n ) { 747 node_t & temp = nodes[ nodes[i].i ]; 748 @temp.j = 0;@ $\C{// touch random node for wrapped nodes}$749 insert_first( lst, temp ); 747 node_t & temp = nodes[ nodes[i].i ]; $\C{// select random node in array}$ 748 @temp.j = 0;@ $\C{// only touch random node for wrapped nodes}$ 749 insert_first( lst, temp ); $\C{// build up}$ 750 750 } 751 insert_first( lst, nodes[ @nodes[i].i@ ] ); $\C{// build up}$ 752 for ( i; n ) pass( &remove_first( lst ) ); $\C{// tear down}$ 751 for ( i; n ) pass( &remove_first( lst ) ); $\C{// tear down}\CRT$ 753 752 totalOpsDone += n; 754 753 } 755 \end{c ++}754 \end{cfa} 756 755 Note, insertion is traversing the list of nodes linearly, @node[i]@. 757 756 For intrusive lists, the inserted (random) node is always touched because its link fields are read/written for insertion into the list.
Note:
See TracChangeset
for help on using the changeset viewer.