Adding some performance improvement ideas for ex 1.7.
This commit is contained in:
		
							parent
							
								
									2592f98296
								
							
						
					
					
						commit
						e5d93a083f
					
				| 
						 | 
					@ -157,3 +157,15 @@ Run times come in three flavours:
 | 
				
			||||||
   the performance of the find(x) operation in your USet and SSet
 | 
					   the performance of the find(x) operation in your USet and SSet
 | 
				
			||||||
   implementations. This exercise is designed to give you a feel for how
 | 
					   implementations. This exercise is designed to give you a feel for how
 | 
				
			||||||
   difficult it can be to obtain efficient implementations of these interfaces
 | 
					   difficult it can be to obtain efficient implementations of these interfaces
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   Some initial ideas:
 | 
				
			||||||
 | 
					   1. A linked list could improve add --- instead of having to move elements
 | 
				
			||||||
 | 
					      in place, you would just insert in between. For a forward-iterating
 | 
				
			||||||
 | 
					      insertion (e.g. for j := 0; j < i; j++), there are decreasing benefits
 | 
				
			||||||
 | 
					      as you insert elements farther in the list. A potential improvement
 | 
				
			||||||
 | 
					      might be a doubly-linked list with the iteration direction determined by
 | 
				
			||||||
 | 
					      distance from the centre, though this comes at the cost of additional
 | 
				
			||||||
 | 
					      complexity. The same improvements would apply to remove.
 | 
				
			||||||
 | 
					   2. For the sorted list, a basic improvement for find would be to pick the
 | 
				
			||||||
 | 
					      middle of the list and do an equality check, basically bisecting to
 | 
				
			||||||
 | 
					      find where the value *would* be.
 | 
				
			||||||
		Loading…
	
		Reference in New Issue