If theres one thing you should learn in cs32 its how

Info icon This preview shows pages 25–29. Sign up to view the full content.

View Full Document Right Arrow Icon
If there’s  one thing  you should learn in  CS32 – it’s  how to choose the best algorithm   to solve a given problem.
Image of page 25

Info icon This preview has intentionally blurred sections. Sign up to view the full version.

View Full Document Right Arrow Icon
Data Structures What was the  data structure  we operated on in the Fibonacci  program? The array itself!       A  data structure  is the  data  that’s operated       on by an algorithm to solve a problem.   Sometimes an algorithm can operate just on the  data passed in  to it.  Other times your algorithm will have to create its own  secondary data  structures  to solve a problem. 
Image of page 26
A Data Structure for Facebook Imagine that you’re building a social network website like  facebook  or  friendster …  And you want to keep track of who made  friends with who… How would you do it? One valid  data structure  might be a  list   of  friend-friend pairs , like this… UserA  made friends w/  UserB Danny Hsu  –  Jenny Oh Danny Hsu  –  Rich Lim Jenny Oh  –  David Sun Danny Hsu  –  Carey Nash Carey Nash  –  Scott Wilhelm Michelle Kwan  –  Danny Hsu Carey Nash  –  David Smallberg Jenny Oh  –  Len Kleinrock Jenny Oh  –  Mario Gerla Mario Gerla  –  Rich Nguyen Now how could I find out if someone is a  friend of  Danny Hsu ? i.e., “Is  Michelle Kwan  a friend of  Danny Hsu?”  Right – we could use a  linear search like before! But could we make it faster? Right – we could  alphabetically sort  our list by  the first friend… Carey Nash  –  Scott   Wilhelm Carey Nash  –  David   Smallberg Danny Hsu  –  Jenny   Oh Danny Hsu  –  Rich   Lim Danny Hsu  –  Carey   Nash Jenny Oh  –  David   Sun Jenny Oh  –  Len   Kleinrock  –  Mario   Gerla Mario Gerla  –  Rich   Nguyen Michelle Kwan  –  Danny   Hsu Now how do we see if Danny and Michelle are  friends? Using a  Binary Search , of course! First we binary search for Danny to see if he invited  Michelle. Then we binary search for Michelle to see if she  invited Danny. Note, by sorting our friend  list we are effectively changing our data structure! Which makes our program much faster!
Image of page 27

Info icon This preview has intentionally blurred sections. Sign up to view the full version.

View Full Document Right Arrow Icon
A Better Friendship Data Structure What if instead we gave each  user a number: User            Number Carey Nash   0 Scott Wilhelm 1 David Smallberg 2 Danny Hsu   3 Jenny   Oh 4 Rich   Lim 5 David   Sun 6 Len   Kleinrock 7 Mario   Gerla 8 Rich   Nguyen 9 Michelle Kwan   10 And then we use a  two-dimensional array  to store relationships… Let’s use a  to indicate that   relationship   exists either way 0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 UserA  made friends w/  UserB Carey Nash  –  David   Smallberg Danny Hsu  –  Rich   Lim Carey Nash  –  Scott   Wilhelm Danny Hsu  –  Jenny   Oh Danny Hsu  –  Carey   Nash Jenny Oh  –  David   Sun Jenny Oh  –  Len   Kleinrock     * 0 2 * 3 5 * * * * * * * * * * * * * * * * * *
Image of page 28
Image of page 29
This is the end of the preview. Sign up to access the rest of the document.

{[ snackBarMessage ]}

What students are saying

  • Left Quote Icon

    As a current student on this bumpy collegiate pathway, I stumbled upon Course Hero, where I can find study resources for nearly all my courses, get online help from tutors 24/7, and even share my old projects, papers, and lecture notes with other students.

    Student Picture

    Kiran Temple University Fox School of Business ‘17, Course Hero Intern

  • Left Quote Icon

    I cannot even describe how much Course Hero helped me this summer. It’s truly become something I can always rely on and help me. In the end, I was not only able to survive summer classes, but I was able to thrive thanks to Course Hero.

    Student Picture

    Dana University of Pennsylvania ‘17, Course Hero Intern

  • Left Quote Icon

    The ability to access any university’s resources through Course Hero proved invaluable in my case. I was behind on Tulane coursework and actually used UCLA’s materials to help me move forward and get everything together on time.

    Student Picture

    Jill Tulane University ‘16, Course Hero Intern