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

Recommend


More recommend