Download presentation
Presentation is loading. Please wait.
Published byMarcia McCoy Modified over 9 years ago
1
1 Principles of Computer Science I Honors Section Note Set 5 CSE 1341
2
2 Today: Searching and Sorting Arrays
3
3 Searching Looking for a particular value in an array Linear Search –Start at the beginning (or end) and iteratively check every element Until you find it OR until you reach the end Binary Search –Start in the middle of a sorted array Eliminates ½ of the remaining search space on each iteration
4
4 Linear Search int test[5]={10, 42, 8, 100, -3}; int result; result = searchArray(test, 5, 100); if (result == -1) cout << “100 Not Found” << endl; else cout << “100 Found” << endl; //Returns Subscript of element or -1 if not found int searchArray(int arr[], int numElem, int target) { for(int x = 0; x < numElem; x++) { if (arr[x] == target) return x; } return (-1); }
5
5 Searching Also Searching –Finding the largest or smallest element in an array //Returns Subscript of largest element int //Largest value placed in val searchArray(int arr[], int numElem, int& val) { val = arr[0]; int subs = 0; for(int x = 1; x < numElem; x++) { if (arr[x] > val) { val = arr[x]; subs = x; } return subs; }
6
6 Binary Search
7
7 Array must be sorted Only searching ½ of the array in each iteration of the search int main() { int test[13]={1,5,7,8,10,11,14,16,22, 35,44,57,66}; int result = binarySearch(test,13,16); if(result == -1) cout<<“Number not found”<<endl; else cout<<“Number found”<<endl; return 0; }
8
8 Binary Search - Intuition 6657443522161411108751 [0][12][6] 16 value We ask: Is Value in the top half of the array, or the bottom half? Determine this based on comparing value to middle element
9
9 Binary Search - Implementation int binarySearch(int arr[], int numElem, int val) { int first = 0, last = numElem – 1, middle; while(first <= last) { middle=first+(last-first)/2; if (arr[middle]==val) return middle; else if(arr[middle]>val) last = middle – 1; else first = middle + 1; } return -1; } find the middle index If val is in bottom half If val is in top half
10
10 Binary Search - Intuition 6657443522161411108751 [0][12][6] 16 val middle = first+(last-first)/2 = 6 arr[middle] = 14 Is val >, < or == 14 > first last so : first = middle + 1 first = 7 Iter 1
11
11 Binary Search - Intuition 6657443522161411108751 [0][12][6] 16 val middle = first+(last-first)/2 = 9 arr[middle] = 35 Is val >, < or == 35 first last Iter 2 first = 7 last = 12 [9][7] < so : last = middle - 1 last = 8
12
12 Binary Search - Intuition 6657443522161411108751 [0][12][6] 16 val middle = first+(last-first)/2 = 7 arr[middle] = 16 Is val >, < or == 16 first last Iter 3 first = 7 last = 8 [9][7] = so : return middle return 7 [8]
13
13 Sorting
14
14 Motivation Searching sorted data is faster than searching unsorted data –What if the phonebook wasn’t in alphabetical order? Sorted data is usually easier to deal with Can sort ascending or descending
15
15 Bubble Sort Intuition 2135 swap if out of order 2135 2135213521352135 …and so on until you make one pass without swapping
16
16 Bubble Sort – Swap Function void swap(int& x, int& y) { int temp = x; x = y; y = temp; }
17
17 Bubble Sort void bubbleSort(int arr[], int numElem) { bool swapped; do { swapped = false; for (int x = 0; x < (numElem-1); x++) { if (arr[x] > arr[x+1]) { swap(arr[x], arr[x+1]); swapped = true; } } while (swapped); }
18
18 Bubble Sort - Example 198327 swapped = false arr [0][1] [5] if(arr[x]>arr[x+1]){ swap(arr[x], arr[x+1]); swapped = true; } true 72 x=0 72
19
19 Bubble Sort - Example 198327 swapped = true arr [2][1] [5] if(arr[x]>arr[x+1]){ swap(arr[x], arr[x+1]); swapped = true; } 73 x=1
20
20 false – do nothing Bubble Sort - Example 198327 swapped = true arr [2][3] [5] if(arr[x]>arr[x+1]){ swap(arr[x], arr[x+1]); swapped = true; } x=2
21
21 false – do nothing Bubble Sort - Example 198327 swapped = true arr [4][3][5] if(arr[x]>arr[x+1]){ swap(arr[x], arr[x+1]); swapped = true; } x=3
22
22 Bubble Sort - Example 198327 swapped = true arr [4][5] if(arr[x]>arr[x+1]){ swap(arr[x], arr[x+1]); swapped = true; } x=4 19 Finished w/ 1 st Iteration of do-while loop...
23
23 Bubble Sort - Example 198327 swapped = false arr [1][5][0][2][3][4] 18 true Finished w/ 2nd Iteration of do-while loop...
24
24 Bubble Sort - Example 198327 swapped = false arr [1][5][0][2][3][4] true Finished w/ 3 rd Iteration of do-while loop... 17
25
25 Bubble Sort - Example 798321 swapped = false arr [1][5][0][2][3][4] true Finished w/ 4 th Iteration of do-while loop... 31
26
26 Bubble Sort - Example 798123 swapped = false arr [1][5][0][2][3][4] true Finished w/ 5 th Iteration of do-while loop... but still must go through one more time! 12
27
27 Bubble Sort - Example 798213 swapped = false arr [1][5][0][2][3][4] DONE!
28
28 Questions??? ?
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.