Week 7 Lecture 2 - SPsp.nathanielgmartin.com/wk07/W7L2-Sorting.pdf · Week 7 6 Sum •The variable...
Transcript of Week 7 Lecture 2 - SPsp.nathanielgmartin.com/wk07/W7L2-Sorting.pdf · Week 7 6 Sum •The variable...
![Page 1: Week 7 Lecture 2 - SPsp.nathanielgmartin.com/wk07/W7L2-Sorting.pdf · Week 7 6 Sum •The variable total is called an accumulator –Each time through the loop it accumulates the](https://reader036.fdocuments.net/reader036/viewer/2022081615/5fd306d2ad9c1866d54f8e07/html5/thumbnails/1.jpg)
Week 7 Lecture 2
Arrays, Sorting, Median
![Page 2: Week 7 Lecture 2 - SPsp.nathanielgmartin.com/wk07/W7L2-Sorting.pdf · Week 7 6 Sum •The variable total is called an accumulator –Each time through the loop it accumulates the](https://reader036.fdocuments.net/reader036/viewer/2022081615/5fd306d2ad9c1866d54f8e07/html5/thumbnails/2.jpg)
Week 7 2
Objectives
• Understand how arrays work– Example: summing an array– Example: sorting an array
– Example: calculating the median of a list ofnumbers
– Example: searching for a number
![Page 3: Week 7 Lecture 2 - SPsp.nathanielgmartin.com/wk07/W7L2-Sorting.pdf · Week 7 6 Sum •The variable total is called an accumulator –Each time through the loop it accumulates the](https://reader036.fdocuments.net/reader036/viewer/2022081615/5fd306d2ad9c1866d54f8e07/html5/thumbnails/3.jpg)
Week 7 3
Arrays
• Arrays are a sequence of identical dataitems.– e.g. int numbers[80];
• They are accessed through an integer index.– e.g. number[5] = 35;
• String are an example of arrays.
![Page 4: Week 7 Lecture 2 - SPsp.nathanielgmartin.com/wk07/W7L2-Sorting.pdf · Week 7 6 Sum •The variable total is called an accumulator –Each time through the loop it accumulates the](https://reader036.fdocuments.net/reader036/viewer/2022081615/5fd306d2ad9c1866d54f8e07/html5/thumbnails/4.jpg)
Week 7 4
Sum
![Page 5: Week 7 Lecture 2 - SPsp.nathanielgmartin.com/wk07/W7L2-Sorting.pdf · Week 7 6 Sum •The variable total is called an accumulator –Each time through the loop it accumulates the](https://reader036.fdocuments.net/reader036/viewer/2022081615/5fd306d2ad9c1866d54f8e07/html5/thumbnails/5.jpg)
Week 7 5
Define Sum
• Array parameter: float numbers[]– Need to know length of array: int length
• Add each element of the array to the total.
• Return total
![Page 6: Week 7 Lecture 2 - SPsp.nathanielgmartin.com/wk07/W7L2-Sorting.pdf · Week 7 6 Sum •The variable total is called an accumulator –Each time through the loop it accumulates the](https://reader036.fdocuments.net/reader036/viewer/2022081615/5fd306d2ad9c1866d54f8e07/html5/thumbnails/6.jpg)
Week 7 6
Sum
• The variable total is called an accumulator– Each time through the loop it accumulates the total so far
– When the loop terminates all of the elements of the array havebeen added to the accumulator
• To ensure you total the entire array the loop must gothrough the entire array– Starts a 0; terminates when it has added “length” numbers.
![Page 7: Week 7 Lecture 2 - SPsp.nathanielgmartin.com/wk07/W7L2-Sorting.pdf · Week 7 6 Sum •The variable total is called an accumulator –Each time through the loop it accumulates the](https://reader036.fdocuments.net/reader036/viewer/2022081615/5fd306d2ad9c1866d54f8e07/html5/thumbnails/7.jpg)
Week 7 7
Call Sum
• Declare and initialize array– float nums[3] = {1.2, 2.3, 3.4}
• Call function– sum(nums, 3)
![Page 8: Week 7 Lecture 2 - SPsp.nathanielgmartin.com/wk07/W7L2-Sorting.pdf · Week 7 6 Sum •The variable total is called an accumulator –Each time through the loop it accumulates the](https://reader036.fdocuments.net/reader036/viewer/2022081615/5fd306d2ad9c1866d54f8e07/html5/thumbnails/8.jpg)
Week 7 8
Sort
![Page 9: Week 7 Lecture 2 - SPsp.nathanielgmartin.com/wk07/W7L2-Sorting.pdf · Week 7 6 Sum •The variable total is called an accumulator –Each time through the loop it accumulates the](https://reader036.fdocuments.net/reader036/viewer/2022081615/5fd306d2ad9c1866d54f8e07/html5/thumbnails/9.jpg)
Week 7 9
Sorting
• Conceptually simple; computationally hard.
• An array, a0 .. an, is sorted if for each ai, ai ≤ ai+1
• It is computationally difficulty because youhave to look at all pairs.– Naive implementation are usually O(n2).
![Page 10: Week 7 Lecture 2 - SPsp.nathanielgmartin.com/wk07/W7L2-Sorting.pdf · Week 7 6 Sum •The variable total is called an accumulator –Each time through the loop it accumulates the](https://reader036.fdocuments.net/reader036/viewer/2022081615/5fd306d2ad9c1866d54f8e07/html5/thumbnails/10.jpg)
Week 7 10
Bubble sort algorithm:
Is one of the simplest sorting algorithms
Works by repeatedly scanning throughthe list, comparing adjacent elements,and swapping them if they are in thewrong order
Sorting data by Using Bubble Sort
![Page 11: Week 7 Lecture 2 - SPsp.nathanielgmartin.com/wk07/W7L2-Sorting.pdf · Week 7 6 Sum •The variable total is called an accumulator –Each time through the loop it accumulates the](https://reader036.fdocuments.net/reader036/viewer/2022081615/5fd306d2ad9c1866d54f8e07/html5/thumbnails/11.jpg)
Week 7 11
Algorithm Bubble ( type A[], int length ) { 1. for ( pass = 1 to length-1 )
1.1 for ( j= 0 to length – 1 – pass ) 1.1.1 If ( A [j] > A [j+1] ) { 1.1.1.1 t = A [j] 1.1.1.2 A [j] = A [j+1] 1.1.1.3 A [j+1] = t
}}
Bubble Sort Algorithm
![Page 12: Week 7 Lecture 2 - SPsp.nathanielgmartin.com/wk07/W7L2-Sorting.pdf · Week 7 6 Sum •The variable total is called an accumulator –Each time through the loop it accumulates the](https://reader036.fdocuments.net/reader036/viewer/2022081615/5fd306d2ad9c1866d54f8e07/html5/thumbnails/12.jpg)
Week 7 12
Implementing Bubble Sort
![Page 13: Week 7 Lecture 2 - SPsp.nathanielgmartin.com/wk07/W7L2-Sorting.pdf · Week 7 6 Sum •The variable total is called an accumulator –Each time through the loop it accumulates the](https://reader036.fdocuments.net/reader036/viewer/2022081615/5fd306d2ad9c1866d54f8e07/html5/thumbnails/13.jpg)
Week 7 13
Swap Implementation
![Page 14: Week 7 Lecture 2 - SPsp.nathanielgmartin.com/wk07/W7L2-Sorting.pdf · Week 7 6 Sum •The variable total is called an accumulator –Each time through the loop it accumulates the](https://reader036.fdocuments.net/reader036/viewer/2022081615/5fd306d2ad9c1866d54f8e07/html5/thumbnails/14.jpg)
Week 7 14
Bubble Sort Application
![Page 15: Week 7 Lecture 2 - SPsp.nathanielgmartin.com/wk07/W7L2-Sorting.pdf · Week 7 6 Sum •The variable total is called an accumulator –Each time through the loop it accumulates the](https://reader036.fdocuments.net/reader036/viewer/2022081615/5fd306d2ad9c1866d54f8e07/html5/thumbnails/15.jpg)
Week 7 15
Bubble Sort Application
![Page 16: Week 7 Lecture 2 - SPsp.nathanielgmartin.com/wk07/W7L2-Sorting.pdf · Week 7 6 Sum •The variable total is called an accumulator –Each time through the loop it accumulates the](https://reader036.fdocuments.net/reader036/viewer/2022081615/5fd306d2ad9c1866d54f8e07/html5/thumbnails/16.jpg)
Week 7 16
Bubble Sort is O(n2)
• For each pass through the array– One needs to pass through most of the array.
• N passes through the array for ncomparisons → O(n2)
![Page 17: Week 7 Lecture 2 - SPsp.nathanielgmartin.com/wk07/W7L2-Sorting.pdf · Week 7 6 Sum •The variable total is called an accumulator –Each time through the loop it accumulates the](https://reader036.fdocuments.net/reader036/viewer/2022081615/5fd306d2ad9c1866d54f8e07/html5/thumbnails/17.jpg)
Week 7 17
Median
![Page 18: Week 7 Lecture 2 - SPsp.nathanielgmartin.com/wk07/W7L2-Sorting.pdf · Week 7 6 Sum •The variable total is called an accumulator –Each time through the loop it accumulates the](https://reader036.fdocuments.net/reader036/viewer/2022081615/5fd306d2ad9c1866d54f8e07/html5/thumbnails/18.jpg)
Week 7 18
Median
• The median is the number where half of thedata values are greater than the number andhalf are lower.– Given a sorted array, the median is just the
value in the middle of the array.
– If the array is even, it is the average of the twomiddle values
![Page 19: Week 7 Lecture 2 - SPsp.nathanielgmartin.com/wk07/W7L2-Sorting.pdf · Week 7 6 Sum •The variable total is called an accumulator –Each time through the loop it accumulates the](https://reader036.fdocuments.net/reader036/viewer/2022081615/5fd306d2ad9c1866d54f8e07/html5/thumbnails/19.jpg)
Week 7 19
Search
![Page 20: Week 7 Lecture 2 - SPsp.nathanielgmartin.com/wk07/W7L2-Sorting.pdf · Week 7 6 Sum •The variable total is called an accumulator –Each time through the loop it accumulates the](https://reader036.fdocuments.net/reader036/viewer/2022081615/5fd306d2ad9c1866d54f8e07/html5/thumbnails/20.jpg)
Week 7 20
Search
• Finding an item in an array is O(n)– When the item isn't found, you need to look at
all items in the array. (Worst case)
• Finding an item in a sorted array isO(log(n))– Look at the middle element
• If it is higher the search item look in the first half
• If it is lower, look in the second half
![Page 21: Week 7 Lecture 2 - SPsp.nathanielgmartin.com/wk07/W7L2-Sorting.pdf · Week 7 6 Sum •The variable total is called an accumulator –Each time through the loop it accumulates the](https://reader036.fdocuments.net/reader036/viewer/2022081615/5fd306d2ad9c1866d54f8e07/html5/thumbnails/21.jpg)
Week 7 21
Binary Search
• binary_search(item, array, low, high)– If (item < array[low] or item > array[high])
• Return not_found
– mid = (high – low) div 2
– If (item = array[mid])• Return mid
– If (item < array[mid])• Return binary_search(item, array, low, mid)
– If (item > array[mid])• Return binary_search(item, array, mid, high)
![Page 22: Week 7 Lecture 2 - SPsp.nathanielgmartin.com/wk07/W7L2-Sorting.pdf · Week 7 6 Sum •The variable total is called an accumulator –Each time through the loop it accumulates the](https://reader036.fdocuments.net/reader036/viewer/2022081615/5fd306d2ad9c1866d54f8e07/html5/thumbnails/22.jpg)
Week 7 22
Does it work?
• The item is between array[low] andarray[high] because array is sorted.
• If the item is between is the middle item itwill be returned.
• If not the half it is in is searched
• All elements searched– Initially low = first element; high = last element
– low <= mid < high
![Page 23: Week 7 Lecture 2 - SPsp.nathanielgmartin.com/wk07/W7L2-Sorting.pdf · Week 7 6 Sum •The variable total is called an accumulator –Each time through the loop it accumulates the](https://reader036.fdocuments.net/reader036/viewer/2022081615/5fd306d2ad9c1866d54f8e07/html5/thumbnails/23.jpg)
Week 7 23
How long does it take
• At each step half of the array is ruled out.– I.e., Let n be the length of the array. The first search is the
entire array s0(n). The second is half the array s1(n/2).
– In general si(n/2i)
• In the worst case, n/2i= 1– I.e. it is the last place you look.
• In the worst case, n = 2i
• Log2(n) = i
• Binary search is O(log(n))