searching chapter 10. 2 chapter contents the problem searching an unsorted array iterative...
Post on 20-Dec-2015
227 views
TRANSCRIPT
![Page 1: Searching Chapter 10. 2 Chapter Contents The Problem Searching an Unsorted Array Iterative Sequential Search Recursive Sequential Search Efficiency of](https://reader030.vdocuments.site/reader030/viewer/2022032704/56649d455503460f94a21fb6/html5/thumbnails/1.jpg)
Searching
Chapter 10
![Page 2: Searching Chapter 10. 2 Chapter Contents The Problem Searching an Unsorted Array Iterative Sequential Search Recursive Sequential Search Efficiency of](https://reader030.vdocuments.site/reader030/viewer/2022032704/56649d455503460f94a21fb6/html5/thumbnails/2.jpg)
2
Chapter Contents The Problem Searching an Unsorted Array
Iterative Sequential Search Recursive Sequential Search Efficiency of Sequential Search
Searching a Sorted Array Sequential search Binary Search Java Class Library: the Method binarySearch
Searching an Unsorted Chain Iterative Sequential Search Recursive Sequential Search Efficiency of Sequential Search of a Chain
Searching a Sorted Chain Sequential Search Binary Search
Choosing a Search Method
![Page 3: Searching Chapter 10. 2 Chapter Contents The Problem Searching an Unsorted Array Iterative Sequential Search Recursive Sequential Search Efficiency of](https://reader030.vdocuments.site/reader030/viewer/2022032704/56649d455503460f94a21fb6/html5/thumbnails/3.jpg)
3
The Problem
Fig. 1 Searching is an every day occurrence.
![Page 4: Searching Chapter 10. 2 Chapter Contents The Problem Searching an Unsorted Array Iterative Sequential Search Recursive Sequential Search Efficiency of](https://reader030.vdocuments.site/reader030/viewer/2022032704/56649d455503460f94a21fb6/html5/thumbnails/4.jpg)
4
Searching an Unsorted Array
A method that uses a loop to search an array.
public boolean contains(Object anEntry)
{ boolean found = false;for (int index = 0; !found && (index < length); index++){ if (anEntry.equals(entry[index]))
found = true;} // end forreturn found;
} // end contains
![Page 5: Searching Chapter 10. 2 Chapter Contents The Problem Searching an Unsorted Array Iterative Sequential Search Recursive Sequential Search Efficiency of](https://reader030.vdocuments.site/reader030/viewer/2022032704/56649d455503460f94a21fb6/html5/thumbnails/5.jpg)
5
Searching an Unsorted Array
Fig. 2 An iterative sequential search of an array that (a) finds its target; (b) does not find its target
![Page 6: Searching Chapter 10. 2 Chapter Contents The Problem Searching an Unsorted Array Iterative Sequential Search Recursive Sequential Search Efficiency of](https://reader030.vdocuments.site/reader030/viewer/2022032704/56649d455503460f94a21fb6/html5/thumbnails/6.jpg)
6
Searching an Unsorted Array
Pseudocode for a recursive algorithm to search an array.
Algorithm to search a[first] through a[last] for desiredItemif (there are no elements to search)
return falseelse if (desiredItem equals a[first])
return trueelse
return the result of searching a[first+1] through a[last]
![Page 7: Searching Chapter 10. 2 Chapter Contents The Problem Searching an Unsorted Array Iterative Sequential Search Recursive Sequential Search Efficiency of](https://reader030.vdocuments.site/reader030/viewer/2022032704/56649d455503460f94a21fb6/html5/thumbnails/7.jpg)
7
Searching an Unsorted Array
Fig. 3 A recursive sequential search of an array that (a) finds its target; (b) does not find its target.
![Page 8: Searching Chapter 10. 2 Chapter Contents The Problem Searching an Unsorted Array Iterative Sequential Search Recursive Sequential Search Efficiency of](https://reader030.vdocuments.site/reader030/viewer/2022032704/56649d455503460f94a21fb6/html5/thumbnails/8.jpg)
8
Efficiency of a Sequential Search
Best case O(1) Locate desired item first
Worst case O(n) Must look at all the items
Average case O(n) Must look at half the items O(n/2) is still O(n)
![Page 9: Searching Chapter 10. 2 Chapter Contents The Problem Searching an Unsorted Array Iterative Sequential Search Recursive Sequential Search Efficiency of](https://reader030.vdocuments.site/reader030/viewer/2022032704/56649d455503460f94a21fb6/html5/thumbnails/9.jpg)
9
Searching a Sorted Array
A sequential search can be more efficient if the data is sorted
Fig. 4 Coins sorted by their mint dates.
![Page 10: Searching Chapter 10. 2 Chapter Contents The Problem Searching an Unsorted Array Iterative Sequential Search Recursive Sequential Search Efficiency of](https://reader030.vdocuments.site/reader030/viewer/2022032704/56649d455503460f94a21fb6/html5/thumbnails/10.jpg)
10
Binary Search of Sorted Array
Fig. 5 Ignoring one-half of the data when the data is sorted.
![Page 11: Searching Chapter 10. 2 Chapter Contents The Problem Searching an Unsorted Array Iterative Sequential Search Recursive Sequential Search Efficiency of](https://reader030.vdocuments.site/reader030/viewer/2022032704/56649d455503460f94a21fb6/html5/thumbnails/11.jpg)
11
Binary Search of Sorted Array
Algorithm for a binary search
Algorithm binarySearch(a, first, last, desiredItem)mid = (first + last)/2 // approximate midpointif (first > last)
return falseelse if (desiredItem equals a[mid])
return trueelse if (desiredItem < a[mid])
return binarySearch(a, first, mid-1, desiredItem)else // desiredItem > a[mid]
return binarySearch(a, mid+1, last, desiredItem)
![Page 12: Searching Chapter 10. 2 Chapter Contents The Problem Searching an Unsorted Array Iterative Sequential Search Recursive Sequential Search Efficiency of](https://reader030.vdocuments.site/reader030/viewer/2022032704/56649d455503460f94a21fb6/html5/thumbnails/12.jpg)
12
Binary Search of Sorted Array
Fig. 6 A recursive binary search of a sorted array that (a) finds its target;
![Page 13: Searching Chapter 10. 2 Chapter Contents The Problem Searching an Unsorted Array Iterative Sequential Search Recursive Sequential Search Efficiency of](https://reader030.vdocuments.site/reader030/viewer/2022032704/56649d455503460f94a21fb6/html5/thumbnails/13.jpg)
13
Binary Search of Sorted Array
Fig. 6 A recursive binary search of a sorted array that (b) does not find its target.
![Page 14: Searching Chapter 10. 2 Chapter Contents The Problem Searching an Unsorted Array Iterative Sequential Search Recursive Sequential Search Efficiency of](https://reader030.vdocuments.site/reader030/viewer/2022032704/56649d455503460f94a21fb6/html5/thumbnails/14.jpg)
14
Java Class Library: The Method binarySearch
The class Arrays in java.util defines versions of a static method with following specification:
/** Task: Searches an entire array for a given item.* @param array the array to be searched* @param desiredItem the item to be found in the array* @return index of the array element that equals desiredItem;* otherwise returns -belongsAt-1, where belongsAt is* the index of the array element that should contain* desiredItem */public static int binarySearch(type[] array, type desiredItem);
![Page 15: Searching Chapter 10. 2 Chapter Contents The Problem Searching an Unsorted Array Iterative Sequential Search Recursive Sequential Search Efficiency of](https://reader030.vdocuments.site/reader030/viewer/2022032704/56649d455503460f94a21fb6/html5/thumbnails/15.jpg)
15
Efficiency of a Binary Search
Best case O(1) Locate desired item first
Worst case O(log n) Must look at all the items
Average case O(log n)
![Page 16: Searching Chapter 10. 2 Chapter Contents The Problem Searching an Unsorted Array Iterative Sequential Search Recursive Sequential Search Efficiency of](https://reader030.vdocuments.site/reader030/viewer/2022032704/56649d455503460f94a21fb6/html5/thumbnails/16.jpg)
16
Iterative Sequential Search of an Unsorted Chain
Fig. 7 A chain of linked nodes that contain the entries in a list.
![Page 17: Searching Chapter 10. 2 Chapter Contents The Problem Searching an Unsorted Array Iterative Sequential Search Recursive Sequential Search Efficiency of](https://reader030.vdocuments.site/reader030/viewer/2022032704/56649d455503460f94a21fb6/html5/thumbnails/17.jpg)
17
Iterative Sequential Search of an Unsorted Chain
Implementation of iterative sequential search
public boolean contains(Object anEntry){ boolean found = false;
Node currentNode = firstNode;while (!found && (currentNode != null)){ if (anEntry.equals(currentNode.getData()))
found = true;else
currentNode = currentNode.getNextNode();} // end whilereturn found;
} // end contains
![Page 18: Searching Chapter 10. 2 Chapter Contents The Problem Searching an Unsorted Array Iterative Sequential Search Recursive Sequential Search Efficiency of](https://reader030.vdocuments.site/reader030/viewer/2022032704/56649d455503460f94a21fb6/html5/thumbnails/18.jpg)
18
Recursive Sequential Search of an Unsorted Chain
Recursive search method/** Task: Recursively searches a chain of nodes for desiredItem,* beginning with the node that current references. */private boolean search(Node current, Object desiredItem){ boolean found;
if (current = = null)found = false;
else if (desiredItem.equals(current.getData()))found = true;
elsefound = search(current.getNextNode(), desiredItem);
return found;} // end search
![Page 19: Searching Chapter 10. 2 Chapter Contents The Problem Searching an Unsorted Array Iterative Sequential Search Recursive Sequential Search Efficiency of](https://reader030.vdocuments.site/reader030/viewer/2022032704/56649d455503460f94a21fb6/html5/thumbnails/19.jpg)
19
Efficiency of a Sequential Search of a Chain
Best case O(1) Locate desired item first
Worst case O(n) Must look at all the items
Average case O(n) Must look at half the items O(n/2) is just O(n)
![Page 20: Searching Chapter 10. 2 Chapter Contents The Problem Searching an Unsorted Array Iterative Sequential Search Recursive Sequential Search Efficiency of](https://reader030.vdocuments.site/reader030/viewer/2022032704/56649d455503460f94a21fb6/html5/thumbnails/20.jpg)
20
Searching a Sorted Chain
Method to search a sorted chainpublic boolean contains(Object anEntry){ boolean found = false;
Comparable entry = (Comparable)anEntry;Node currentNode = firstNode;while ( (currentNode != null) &&
(entry.compareTo(currentNode.getData()) > 0) ){ currentNode = currentNode.getNextNode();} // end whileif ( (currentNode != null) &&
entry.equals(currentNode.getData()) ){ found = true;} // end ifreturn found;
} // end contains
Note: Binary search of a chain of linked nodes is impractical.
Note: Binary search of a chain of linked nodes is impractical.
![Page 21: Searching Chapter 10. 2 Chapter Contents The Problem Searching an Unsorted Array Iterative Sequential Search Recursive Sequential Search Efficiency of](https://reader030.vdocuments.site/reader030/viewer/2022032704/56649d455503460f94a21fb6/html5/thumbnails/21.jpg)
21
Choosing a Search Method
Iterative search saves time, memory over recursive search
BestCase
AverageCase
WorstCase
Sequential search(unsorted data) O(1) O(n) O(n)
Sequential search(sorted data) O(1) O(n) O(n)
Binary Search(sorted array) O(1) O(log n) O(log n)