Successfully reported this slideshow.
Upcoming SlideShare
×

# Bubble and-merge-sort

699 views

Published on

Complete presentation about bubble and merge sort

Published in: Education
• Full Name
Comment goes here.

Are you sure you want to Yes No
• Be the first to comment

• Be the first to like this

### Bubble and-merge-sort

1. 1. SortingSorting
2. 2. Sorting Keeping data in “order” allows it to be searched more efficiently Example: Phone Book – Sorted by Last Name (“lots” of work to do this) • Easy to look someone up if you know their last name • Tedious (but straightforward) to find by First name or Address Important if data will be searched many times Two algorithms for sorting today – Bubble Sort – Merge Sort Searching: next lecture
3. 3. Bubble Sort (“Sink” sort here) If A(1)>A(2) switch If A(2)>A(3) switch If A(3)>A(4) switch If A(4)>A(5) switch … If A(N-3)>A(N-2) switch If A(N-2)>A(N-1) switch If A(N-1)>A(N) switch If A(1)>A(2) switch If A(2)>A(3) switch If A(3)>A(4) switch If A(4)>A(5) switch If A(N-3)>A(N-2) switch If A(N-2)>A(N-1) switch If A(1)>A(2) switch If A(2)>A(3) switch If A(3)>A(4) switch If A(4)>A(5) switch If A(N-3)>A(N-2) switch If A(1)>A(2) switch A(N) is now largest entry A(N-1) is now 2nd largest entry A(N) is still largest enry A(N-2) is now 3rd largest entry A(N-1) is still 2nd largest entry A(N) is still largest enry A(1) is now Nth largest entry. A(2) is still (N-1)th largest entry. A(3) is still (N-2)th largest entry. A(N-3) is still 4th largest entry A(N-2) is still 3rd largest entry A(N-1) is still 2nd largest entry A(N) is still largest entry
4. 4. Bubble Sort (“Sink” sort here) If A(1)>A(2) switch If A(2)>A(3) switch If A(3)>A(4) switch If A(4)>A(5) switch … If A(N-3)>A(N-2) switch If A(N-2)>A(N-1) switch If A(N-1)>A(N) switch If A(1)>A(2) switch If A(2)>A(3) switch If A(3)>A(4) switch If A(4)>A(5) switch If A(N-3)>A(N-2) switch If A(N-2)>A(N-1) switch If A(1)>A(2) switch If A(2)>A(3) switch If A(3)>A(4) switch If A(4)>A(5) switch If A(N-3)>A(N-2) switch If A(1)>A(2) switch N-1 steps N-2 steps N-3 steps 1 step 22 )1( stepsof# 21 1 NNN i N i ≈ − == ∑ − =
5. 5. Bubble Sort (“Sink” sort here) If A(1)>A(2) switch If A(2)>A(3) switch If A(3)>A(4) switch If A(4)>A(5) switch … If A(N-3)>A(N-2) switch If A(N-2)>A(N-1) switch If A(N-1)>A(N) switch If A(1)>A(2) switch If A(2)>A(3) switch If A(3)>A(4) switch If A(4)>A(5) switch If A(N-3)>A(N-2) switch If A(N-2)>A(N-1) switch If A(1)>A(2) switch If A(2)>A(3) switch If A(3)>A(4) switch If A(4)>A(5) switch If A(N-3)>A(N-2) switch If A(1)>A(2) switch for lastcompare=N-1:-1:1 for i=1:lastcompare if A(i)>A(i+1)
6. 6. Matlab code for Bubble Sort function S = bubblesort(A) % Assume A row/column; Copy A to S S = A; N = length(S); for lastcompare=N-1:-1:1 for i=1:lastcompare if S(i)>S(i+1) tmp = S(i); S(i) = S(i+1); S(i+1) = tmp; end end end What about returning an Index vector Idx, with the property that S = A(Idx)?
7. 7. Matlab code for Bubble Sort function [S,Idx] = bubblesort(A) % Assume A row/column; Copy A to S N = length(A); S = A; Idx = 1:N; % A(Idx) equals S for lastcompare=N-1:-1:1 for i=1:lastcompare if S(i)>S(i+1) tmp = S(i); tmpi = Idx(i); S(i) = S(i+1); Idx(i) = Idx(i+1); S(i+1) = tmp; Idx(i+1) = tmpi; end end end If we switch two entries of S, then exchange the same two entries of Idx. This keeps A(Idx) equaling S
8. 8. Merging two already sorted arrays Suppose A and B are two sorted arrays (different lengths) How do you “merge” these into a sorted array C? Chalkboard…
9. 9. Pseudo-code: Merging two already sorted arrays function C = merge(A,B) nA = length(A); nB = length(B); iA = 1; iB = 1; %smallest unused element C = zeros(1,nA+nB); for iC=1:nA+nB if A(iA)<B(iB) %compare smallest unused C(iC) = A(iA); iA = iA+1; %use A else C(iC) = B(iB); iB = iB+1; %use B end end BA nn +=steps""of#
10. 10. MergeSort function S = mergeSort(A) n = length(A); if n==1 S = A; else hn = floor(n/2); S1 = mergeSort(A(1:hn)); S2 = mergeSort(A(hn+1:end)); S = merge(S1,S2); end Base Case Split in half Sort 2nd half Merge 2 sorted arrays Sort 1st half
11. 11. Rough Operation Count for MergeSort Let R(n) denote the number of operations necessary to sort (using mergeSort) an array of length n. function S = mergeSort(A) n = length(A); if n==1 S = A; else hn = floor(n/2); S1 = mergeSort(A(1:hn)); S2 = mergeSort(A(hn+1:end)); S = merge(S1,S2); end R(1) = 0 R(n/2) to sort array of length n/2 n steps to merge two sorted arrays of total length n R(n/2) to sort array of length n/2 Recursive relation: R(1)=0, R(n) = 2*R(n/2) + n
12. 12. Rough Operation Count for MergeSort The recursive relation for R R(1)=0, R(n) = 2*R(n/2) + n Claim: For n=2m , it is true that R(n) ≤ n log2(n) Case (m=0): true, since log2(1)=0 Case (m=k+1 from m=k) ( )12 1 +⋅= + kk ( ) kkk 222log22 2 ⋅+⋅≤ ( ) kk R 2222 ⋅+⋅=( ) ( )kk RR 222 1 ⋅=+ ( )1 2 1 2log2 ++ ⋅= kk Recursive relation Induction hypothesis
13. 13. Matlab command: sort Syntax is [S] = sort(A) If A is a vector, then S is a vector in ascending order The indices which rearrange A into S are also available. [S,Idx] = sort(A) S is the sorted values of A, and A(Idx) equals S.