week13

week13 - Week 13: Searching and Sorting CS 177 1 Searching...

Info iconThis preview shows pages 1–10. Sign up to view the full content.

View Full Document Right Arrow Icon
CS 177 Week 13: Searching and Sorting 1
Background image of page 1

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

View Full DocumentRight Arrow Icon
Searching for a number Lets say that I give you a list of numbers, and I ask you, “Is 37 on this list?” As a human, you have no problem answering this question, as long as the list is reasonably short What if the list is an array, and I want you to write a Java program to find some number? 2
Background image of page 2
Search algorithm Easy! We just look through every element in the array until we find it or run out public static int find( int [] array, int number ) { for ( int i = 0; i < array.length; i++ ) if ( array[i] == number ) return i; 3
Background image of page 3

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

View Full DocumentRight Arrow Icon
How long does it take? We talked about Big Oh notation last week Now we have some way to measure how long this algorithm takes How long, if n is the length of the array? O ( n ) time because we have to look through every element in the array, in the worst case 4
Background image of page 4
Can we do better? Is there any way to go smaller than O ( n )? What complexity classes even exist that are smaller than O ( n )? O (1) O (log n ) Well, on average, we only need to check half the numbers, that’s ½ n which is still O ( n ) 5
Background image of page 5

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

View Full DocumentRight Arrow Icon
We can’t do better unless… We can do better with more information For example, if the list is sorted, then we can use that information somehow How? We can play a High-Low game 6
Background image of page 6
Binary search Repeatedly divide the search space in half We’re looking for 37, let’s say 54 23 31 Check the middle (Too high) Check the middle (Too low) Check the middle (Too low) Check the middle (Found it!) 37 7
Background image of page 7

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

View Full DocumentRight Arrow Icon
So, is that faster than linear search? How long can it take? What if you never find what you’re looking for? Well, then, you’ve narrowed it down to a single spot in the array that doesn’t have what you want And what’s the maximum amount of time that could have taken? 8
Background image of page 8
Running time for binary search We cut the search space in half every time At worst, we keep cutting n in half until we get 1 The running time is O (log n ) For 64 items log n = 6, for 128 items log n = 7, for 256 items log n = 8, for 512 items log n = 9, ….
Background image of page 9

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

View Full DocumentRight Arrow Icon
Image of page 10
This is the end of the preview. Sign up to access the rest of the document.

Page1 / 35

week13 - Week 13: Searching and Sorting CS 177 1 Searching...

This preview shows document pages 1 - 10. Sign up to view the full document.

View Full Document Right Arrow Icon
Ask a homework question - tutors are online