Download - CPSC 221: Introduction
![Page 1: CPSC 221: Introduction](https://reader033.vdocuments.us/reader033/viewer/2022050218/626ea4780947ad0be329d59b/html5/thumbnails/1.jpg)
CPSC 221: Algorithms and Data Structures
Crash Course on Arrays
Alan J. Hu
1
![Page 2: CPSC 221: Introduction](https://reader033.vdocuments.us/reader033/viewer/2022050218/626ea4780947ad0be329d59b/html5/thumbnails/2.jpg)
Why Arrays?
• Arrays are a very low-level data structure, that basically matches the underlying memory.
• Good: They are very efficient!• Bad: They have unpleasant limitations.
![Page 3: CPSC 221: Introduction](https://reader033.vdocuments.us/reader033/viewer/2022050218/626ea4780947ad0be329d59b/html5/thumbnails/3.jpg)
Fact: Bits are real!
• Every bit of memory in your program is stored in an actual physical location on a silicon chip.
• These physical memory bits are organized into rectangular arrays, and you can quickly read/write any bit by giving its location as a numericaladdress.
• (Google DRAM “die photo” to see some pictures of what memory really looks like.)
![Page 4: CPSC 221: Introduction](https://reader033.vdocuments.us/reader033/viewer/2022050218/626ea4780947ad0be329d59b/html5/thumbnails/4.jpg)
Die Photo of 1Mb DRAM
License: Creative Commons Attribution 3.0Downloaded from Wikimedia Commons.Source: http://zeptobars.ru/en/read/how-to-open-microchip-asic-what-inside
4
![Page 5: CPSC 221: Introduction](https://reader033.vdocuments.us/reader033/viewer/2022050218/626ea4780947ad0be329d59b/html5/thumbnails/5.jpg)
Consequences of Bits Being Real
• If you know the address where your data is, you can quickly access its memory.
• If you don’t know the address, you can’t find the data easily.
• You must work to move data. You can’t just “squeeze in” some more bits between data you’ve already stored.
![Page 6: CPSC 221: Introduction](https://reader033.vdocuments.us/reader033/viewer/2022050218/626ea4780947ad0be329d59b/html5/thumbnails/6.jpg)
Arrays in C++
• These are almost the same as arrays in Java.• Declare an array, e.g.:
int x[10];
creates an array of 10 ints: x[0], x[1], …, x[9]• Access array elements just like any variable:
x[0] = x[1]+x[2];for (int i=0; i<10; i++) x[i] = 0;
• Lots more info in book, online, etc., e.g.,http://www.cplusplus.com/doc/tutorial/arrays/
![Page 7: CPSC 221: Introduction](https://reader033.vdocuments.us/reader033/viewer/2022050218/626ea4780947ad0be329d59b/html5/thumbnails/7.jpg)
Arrays vs. Java’s ArrayList
• Arrays have a fixed size. They cannot grow or shrink.
• You can’t insert things or delete things from the middle of an array.
• Java provides an ArrayList class that does let you do those things. That makes programming easier.
• (But Java ArrayLists are doing things behind the scenes to make things nicer for you to program…)
![Page 8: CPSC 221: Introduction](https://reader033.vdocuments.us/reader033/viewer/2022050218/626ea4780947ad0be329d59b/html5/thumbnails/8.jpg)
Do-It-Yourself ArrayLists
ArrayLists are nothing magical! (OK, the generic <type> stuff is kind of magic.)
It’s just a class. If we fix the type of the elements (e.g., have an ArrayList of String), you know enough to write your own version.
But how do you allow arrays to grow?
![Page 9: CPSC 221: Introduction](https://reader033.vdocuments.us/reader033/viewer/2022050218/626ea4780947ad0be329d59b/html5/thumbnails/9.jpg)
Real-Life Analogy: Moving Homes
A house (or condo, apartment, etc.) has a fixed size. What happens when your family grows and you need more space?
![Page 10: CPSC 221: Introduction](https://reader033.vdocuments.us/reader033/viewer/2022050218/626ea4780947ad0be329d59b/html5/thumbnails/10.jpg)
Real-Life Analogy: Moving Homes
A house (or condo, apartment, etc.) has a fixed size. What happens when your family grows and you need more space?
Answer: You buy a bigger place, and then you pack up and move all your stuff to the new place, and get rid of your old home.
![Page 11: CPSC 221: Introduction](https://reader033.vdocuments.us/reader033/viewer/2022050218/626ea4780947ad0be329d59b/html5/thumbnails/11.jpg)
Making Your Own ArrayList
An array has a fixed size. What happens when your list grows and you need more space?
Answer: You allocate a bigger array, and then you pack up and move all your stuff to the new array, and get rid of your old array.
![Page 12: CPSC 221: Introduction](https://reader033.vdocuments.us/reader033/viewer/2022050218/626ea4780947ad0be329d59b/html5/thumbnails/12.jpg)
Making Your Own ArrayList
Answer: You allocate a bigger array, and then you pack up and move all your stuff to the new array, and get rid of your old array.
a 3 1 4 1
a.length 4
aCount 4
![Page 13: CPSC 221: Introduction](https://reader033.vdocuments.us/reader033/viewer/2022050218/626ea4780947ad0be329d59b/html5/thumbnails/13.jpg)
Making Your Own ArrayList
Answer: You allocate a bigger array, and then you pack up and move all your stuff to the new array, and get rid of your old array.
a 3 1 4 1
a.length 4
aCount 4
newA
newA.length 8
![Page 14: CPSC 221: Introduction](https://reader033.vdocuments.us/reader033/viewer/2022050218/626ea4780947ad0be329d59b/html5/thumbnails/14.jpg)
Making Your Own ArrayList
Answer: You allocate a bigger array, and then you pack up and move all your stuff to the new array, and get rid of your old array.
a 3 1 4 1
a.length 4
aCount 4
newA 3
newA.length 8
![Page 15: CPSC 221: Introduction](https://reader033.vdocuments.us/reader033/viewer/2022050218/626ea4780947ad0be329d59b/html5/thumbnails/15.jpg)
Making Your Own ArrayList
Answer: You allocate a bigger array, and then you pack up and move all your stuff to the new array, and get rid of your old array.
a 3 1 4 1
a.length 4
aCount 4
newA 3 1
newA.length 8
![Page 16: CPSC 221: Introduction](https://reader033.vdocuments.us/reader033/viewer/2022050218/626ea4780947ad0be329d59b/html5/thumbnails/16.jpg)
Making Your Own ArrayList
Answer: You allocate a bigger array, and then you pack up and move all your stuff to the new array, and get rid of your old array.
a 3 1 4 1
a.length 4
aCount 4
newA 3 1 4
newA.length 8
![Page 17: CPSC 221: Introduction](https://reader033.vdocuments.us/reader033/viewer/2022050218/626ea4780947ad0be329d59b/html5/thumbnails/17.jpg)
Making Your Own ArrayList
Answer: You allocate a bigger array, and then you pack up and move all your stuff to the new array, and get rid of your old array.
a 3 1 4 1
a.length 4
aCount 4
newA 3 1 4 1
newA.length 8
![Page 18: CPSC 221: Introduction](https://reader033.vdocuments.us/reader033/viewer/2022050218/626ea4780947ad0be329d59b/html5/thumbnails/18.jpg)
Making Your Own ArrayList
Answer: You allocate a bigger array, and then you pack up and move all your stuff to the new array, and get rid of your old array.
a 3 1 4 1
a.length 8
aCount 4
newA 3 1 4 1
newA.length 8
![Page 19: CPSC 221: Introduction](https://reader033.vdocuments.us/reader033/viewer/2022050218/626ea4780947ad0be329d59b/html5/thumbnails/19.jpg)
Making Your Own ArrayList
Answer: You allocate a bigger array, and then you pack up and move all your stuff to the new array, and get rid of your old array.
a
a.length 8
aCount 4
newA 3 1 4 1
newA.length 8
(garbage collection)
![Page 20: CPSC 221: Introduction](https://reader033.vdocuments.us/reader033/viewer/2022050218/626ea4780947ad0be329d59b/html5/thumbnails/20.jpg)
Making Your Own ArrayList
Answer: You allocate a bigger array, and then you pack up and move all your stuff to the new array, and get rid of your old array.
a
a.length 8
aCount 4
3 1 4 1
(garbage collection)