Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 Principles of Computer Science I Honors Section Note Set 5 CSE 1341.

Similar presentations


Presentation on theme: "1 Principles of Computer Science I Honors Section Note Set 5 CSE 1341."— Presentation transcript:

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??? ?


Download ppt "1 Principles of Computer Science I Honors Section Note Set 5 CSE 1341."

Similar presentations


Ads by Google