Grokking Algorithms



Yüklə 348,95 Kb.
Pdf görüntüsü
səhifə19/122
tarix05.12.2023
ölçüsü348,95 Kb.
#173611
1   ...   15   16   17   18   19   20   21   22   ...   122
grokking-algorithms-illustrated-programmers-curious

Chapter 2
 
 
I
 
 
Selection sort


25
Arrays and linked lists
If another friend comes by, you’re out of room again—and you all have 
to move a second time! What a pain. Similarly, adding new items to 
an array can be a big pain. If you’re out of space and need to move to a 
new spot in memory every time, adding a new item will be really slow. 
One easy fix is to “hold seats”: even if you have only 3 items in your task 
list, you can ask the computer for 10 slots, just in case. Then you can 
add 10 items to your task list without having to move. This is a good 
workaround, but you should be aware of a couple of downsides:
• You may not need the extra slots that you asked for, and then that 
memory will be wasted. You aren’t using it, but no one else can use
it either.
• You may add more than 10 items to your task list and have to
move anyway.
So it’s a good workaround, but it’s not a perfect solution. Linked lists 
solve this problem of adding items. 
Linked lists
With linked lists, your items can be anywhere in memory.
Each item stores the address of the next item in the list. A bunch of 
random memory addresses are linked together.


26
It’s like a treasure hunt. You go to the first address, and it says, “The next 
item can be found at address 123.” So you go to address 123, and it says, 
“The next item can be found at address 847,” and so on. Adding an item 
to a linked list is easy: you stick it anywhere in memory and store the 
address with the previous item.
With linked lists, you never have to move your items. You also avoid 
another problem. Let’s say you go to a popular movie with five of your 
friends. The six of you are trying to find a place to sit, but the theater 
is packed. There aren’t six seats together. Well, sometimes this happens 
with arrays. Let’s say you’re trying to find 10,000 slots for an array. Your 
memory has 10,000 slots, but it doesn’t have 10,000 slots together. You 
can’t get space for your array! A linked list is like saying, “Let’s split up 
and watch the movie.” If there’s space in memory, you have space for 
your linked list.
If linked lists are so much better at inserts, what are arrays good for?
Arrays
Websites with top-10 lists use a scummy tactic to get more page views. 
Instead of showing you the list on one page, they put one item on each 
page and make you click Next to get to the next item in the list. For 
example, Top 10 Best TV Villains won’t show you the entire list on one 
page. Instead, you start at #10 (Newman), and you have to click Next on 
each page to reach #1 (Gustavo Fring). This technique gives the websites 
10 whole pages on which to show you ads, but it’s boring to click Next 9 
times to get to #1. It would be much better if the whole list was on one 
page and you could click each person’s name for more info.
Linked lists have a similar problem. Suppose you want to read the last 
item in a linked list. You can’t just read it, because you don’t know what 
address it’s at. Instead, you have to go to item #1 to get the address for 

Yüklə 348,95 Kb.

Dostları ilə paylaş:
1   ...   15   16   17   18   19   20   21   22   ...   122




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin