cs 10 problem solving via object oriented programming
play

CS 10: Problem solving via Object Oriented Programming Lists Part - PowerPoint PPT Presentation

CS 10: Problem solving via Object Oriented Programming Lists Part 2 (Arrays Revenge!) Agenda 1. Growing array List implementation 2. Orders of growth 3. Asymptotic notation 4. List analysis 5. Iteration 2 Linked lists are a logical


  1. CS 10: Problem solving via Object Oriented Programming Lists Part 2 (Array’s Revenge!)

  2. Agenda 1. Growing array List implementation 2. Orders of growth 3. Asymptotic notation 4. List analysis 5. Iteration 2

  3. Linked lists are a logical choice to implement the List ADT List ADT features Linked List get()/set() element Start at head and march • anywhere in List down to index in list Slow to find element, • but fast once there 3

  4. Linked lists are a logical choice to implement the List ADT List ADT features Linked List get()/set() element Start at head and march • anywhere in List down to index in list Slow to find element, • but fast once there add()/remove() element Start at head and march • anywhere in List down to index in list Slow to find element, • but fast once there 4

  5. Linked lists are a logical choice to implement the List ADT List ADT features Linked List get()/set() element Start at head and march • anywhere in List down to index in list Slow to find element, • but fast once there add()/remove() element Start at head and march • anywhere in List down to index in list Slow to find element, • but fast once there No limit to number of Built in feature of how • elements in List linked lists work Just create a new • element and splice it in 5

  6. At first arrays seem to be a poor choice to implement the List ADT List ADT features Linked List Array get()/set() element Start at head and march Contiguous block of • • anywhere in List down to index in list memory Slow to find element, Random access aspect • • but fast once there of arrays makes get()/set() easy and fast add()/remove() element Start at head and march • anywhere in List down to index in list Slow to find element, • but fast once there No limit to number of Built in feature of how • elements in List linked lists work Just create a new • element and splice it in 6

  7. At first arrays seem to be a poor choice to implement the List ADT List ADT features Linked List Array get()/set() element Start at head and march Contiguous block of • • anywhere in List down to index in list memory Slow to find element, Random access aspect • • but fast once there of arrays makes get()/set() easy and fast add()/remove() element Start at head and march Fast to find element, but • • anywhere in List down to index in list slow once there Slow to find element, Have to make (or fill) • • but fast once there hole by copying over No limit to number of Built in feature of how • elements in List linked lists work Just create a new • element and splice it in 7

  8. At first arrays seem to be a poor choice to implement the List ADT List ADT features Linked List Array get()/set() element Start at head and march Contiguous block of • • anywhere in List down to index in list memory Slow to find element, Random access aspect • • but fast once there of arrays makes get()/set() easy and fast add()/remove() element Start at head and march Fast to find element, but • • anywhere in List down to index in list slow once there Slow to find element, Have to make (or fill) • • but fast once there hole by copying over No limit to number of Built in feature of how Arrays declared of fixed • • elements in List linked lists work size Just create a new • element and splice it in 8

  9. At first arrays seem to be a poor choice to implement the List ADT List ADT features Linked List Array get()/set() element Start at head and march Contiguous block of • • anywhere in List down to index in list memory Slow to find element, Random access aspect • • but fast once there of arrays makes get()/set() easy and fast add()/remove() element Start at head and march Fast to find element, but • • anywhere in List down to index in list slow once there Slow to find element, Have to make (or fill) • • but fast once there hole by copying over No limit to number of Built in feature of how Arrays declared of fixed • • elements in List linked lists work size Just create a new • element and splice it in Or is it? 9

  10. At first arrays seem to be a poor choice to implement the List ADT List ADT features Linked List Array get()/set() element Start at head and march Contiguous block of • • anywhere in List down to index in list memory Slow to find element, Random access aspect • • but fast once there of arrays makes get()/set() easy and fast add()/remove() element Start at head and march Fast to find element, but • • anywhere in List down to index in list slow once there Slow to find element, Have to make (or fill) • • but fast once there hole by copying over No limit to number of Built in feature of how Arrays declared of fixed • • elements in List linked lists work size Just create a new • element and splice it in 10

  11. Random access aspect of arrays makes it easy to get or set any element Array reserves a contiguous • block of memory Big enough to hold specified • number of elements (10 here) times size of each element (4 bytes for integers) = 40 bytes Indices are 0…9 • 11

  12. Random access aspect of arrays makes it easy to get or set any element Index 0 1 2 3 4 5 6 7 8 9 12

  13. Random access aspect of arrays makes it easy to get or set any element Index 0 1 2 3 4 5 6 7 8 9 2 No need to march down list to get or set element To find element: Start at base address of array (this is • where “ numbers ” array points) Element at index idx is at address: • base addr + idx *size(element) 13

  14. Random access aspect of arrays makes it easy to get or set any element Index 0 1 2 3 4 5 6 7 8 9 2 No need to march down list to get or set element To find element: Start at base address of array (this is • where “ numbers ” array points) Element at index idx is at address: • base addr + idx *size(element) Index 2 at base addr + 2*4 bytes • Time to access element is constant • anywhere in array (just simple math operation to calculate any index) With linked list have to march down • list, takes longer to find elements at end 14

  15. Random access aspect of arrays makes it easy to get or set any element Index 0 1 2 3 4 5 6 7 8 9 2 10 15

  16. Random access aspect of arrays makes it easy to get or set any element Index 0 1 2 3 4 5 6 7 8 9 2 10 What values will a, b and c have? 16

  17. Random access aspect of arrays makes it easy to get or set any element Index 0 1 2 3 4 5 6 7 8 9 2 10 What values will a, b and c have? 17

  18. At first arrays seem to be a poor choice to implement the List ADT List ADT features Linked List Array get()/set() element Start at head and march Contiguous block of • • anywhere in List down to index in list memory Slow to find element, Random access aspect • • but fast once there of arrays makes get()/set() easy and fast add()/remove() element Start at head and march Fast to find element, but • • anywhere in List down to index in list slow once there Slow to find element, Have to make (or fill) • • but fast once there hole by copying over No limit to number of Built in feature of how Arrays declared of fixed • • elements in List linked lists work size Just create a new • element and splice it in 18

  19. Because arrays are a contiguous block of memory, hard to insert (except at end) Index 0 1 2 3 4 5 6 7 8 9 16 7 2 25 -8 10 0 0 0 0 Insert 14 at index 2 14 19

  20. Because arrays are a contiguous block of memory, hard to insert (except at end) Index 0 1 2 3 4 5 6 7 8 9 16 7 2 25 -8 10 0 0 0 0 Slide indices ≥ idx to the • right to make a hole Insert 14 at index 2 14 Copy each element to • next index 20

  21. Because arrays are a contiguous block of memory, hard to insert (except at end) Index 0 1 2 3 4 5 6 7 8 9 16 7 2 25 -8 10 10 0 0 0 Slide indices ≥ idx to the • right to make a hole Insert 14 at index 2 14 Copy each element to • next index 21

  22. Because arrays are a contiguous block of memory, hard to insert (except at end) Index 0 1 2 3 4 5 6 7 8 9 16 7 2 25 -8 -8 10 0 0 0 Slide indices ≥ idx to the • right to make a hole Insert 14 at index 2 14 Copy each element to • next index 22

  23. Because arrays are a contiguous block of memory, hard to insert (except at end) Index 0 1 2 3 4 5 6 7 8 9 16 7 2 25 25 -8 10 0 0 0 Slide indices ≥ idx to the • right to make a hole Insert 14 at index 2 14 Copy each element to • next index 23

  24. Because arrays are a contiguous block of memory, hard to insert (except at end) Index 0 1 2 3 4 5 6 7 8 9 16 7 2 2 25 -8 10 0 0 0 Slide indices ≥ idx to the • right to make a hole Insert 14 at index 2 14 Copy each element to • next index 24

  25. Because arrays are a contiguous block of memory, hard to insert (except at end) Index 0 1 2 3 4 5 6 7 8 9 16 7 2 2 25 -8 10 0 0 0 Slide indices ≥ idx to the • right to make a hole Insert 14 at index 2 14 Copy each element to • next index Copy new element into index 25

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend