Sorting - PowerPoint PPT Presentation

1 / 13
About This Presentation
Title:

Sorting

Description:

Sorting 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 ... – PowerPoint PPT presentation

Number of Views:41
Avg rating:3.0/5.0
Slides: 14
Provided by: Mariaj230
Category:
Tags: bubble | sorting

less

Transcript and Presenter's Notes

Title: Sorting


1
Sorting
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
Bubble Sort (Sink sort here)
If A(1)gtA(2) switch If A(2)gtA(3) switch If
A(3)gtA(4) switch If A(4)gtA(5) switch If
A(N-3)gtA(N-2) switch
  • If A(1)gtA(2)
  • switch
  • If A(2)gtA(3)
  • switch
  • If A(3)gtA(4)
  • switch
  • If A(4)gtA(5)
  • switch
  • If A(N-3)gtA(N-2)
  • switch
  • If A(N-2)gtA(N-1)
  • switch
  • If A(N-1)gtA(N)
  • switch

If A(1)gtA(2) switch
If A(1)gtA(2) switch If A(2)gtA(3) switch If
A(3)gtA(4) switch If A(4)gtA(5) switch If
A(N-3)gtA(N-2) switch If A(N-2)gtA(N-1) switch
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
A(N-2) is now 3rd largest entry A(N-1) is still
2nd largest entry A(N) is still largest enry
A(N-1) is now 2nd largest entry A(N) is still
largest enry
A(N) is now largest entry
4
Bubble Sort (Sink sort here)
If A(1)gtA(2) switch If A(2)gtA(3) switch If
A(3)gtA(4) switch If A(4)gtA(5) switch If
A(N-3)gtA(N-2) switch
  • If A(1)gtA(2)
  • switch
  • If A(2)gtA(3)
  • switch
  • If A(3)gtA(4)
  • switch
  • If A(4)gtA(5)
  • switch
  • If A(N-3)gtA(N-2)
  • switch
  • If A(N-2)gtA(N-1)
  • switch
  • If A(N-1)gtA(N)
  • switch

If A(1)gtA(2) switch If A(2)gtA(3) switch If
A(3)gtA(4) switch If A(4)gtA(5) switch If
A(N-3)gtA(N-2) switch If A(N-2)gtA(N-1) switch
If A(1)gtA(2) switch
1 step
N-3 steps
N-2 steps
N-1 steps
5
Bubble Sort (Sink sort here)
If A(1)gtA(2) switch If A(2)gtA(3) switch If
A(3)gtA(4) switch If A(4)gtA(5) switch If
A(N-3)gtA(N-2) switch
  • If A(1)gtA(2)
  • switch
  • If A(2)gtA(3)
  • switch
  • If A(3)gtA(4)
  • switch
  • If A(4)gtA(5)
  • switch
  • If A(N-3)gtA(N-2)
  • switch
  • If A(N-2)gtA(N-1)
  • switch
  • If A(N-1)gtA(N)
  • switch

If A(1)gtA(2) switch If A(2)gtA(3) switch If
A(3)gtA(4) switch If A(4)gtA(5) switch If
A(N-3)gtA(N-2) switch If A(N-2)gtA(N-1) switch
If A(1)gtA(2) switch
for lastcompareN-1-11 for i1lastcompare
if A(i)gtA(i1)
6
Matlab code for Bubble Sort
  • function S bubblesort(A)
  • Assume A row/column Copy A to S
  • S A
  • N length(S)
  • for lastcompareN-1-11
  • for i1lastcompare
  • if S(i)gtS(i1)
  • tmp S(i)
  • S(i) S(i1)
  • S(i1) tmp
  • end
  • end
  • end

What about returning an Index vector Idx, with
the property that S A(Idx)?
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 1N A(Idx) equals S
  • for lastcompareN-1-11
  • for i1lastcompare
  • if S(i)gtS(i1)
  • tmp S(i) tmpi Idx(i)
  • S(i) S(i1) Idx(i) Idx(i1)
  • S(i1) tmp Idx(i1) 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
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
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,nAnB)
  • for iC1nAnB
  • if A(iA)ltB(iB) compare smallest unused
  • C(iC) A(iA) iA iA1 use A
  • else
  • C(iC) B(iB) iB iB1 use B
  • end
  • end

10
MergeSort
  • function S mergeSort(A)
  • n length(A)
  • if n1
  • S A
  • else
  • hn floor(n/2)
  • S1 mergeSort(A(1hn))
  • S2 mergeSort(A(hn1end))
  • S merge(S1,S2)
  • end

Base Case
Split in half
Sort 1st half
Sort 2nd half
Merge 2 sorted arrays
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 n1
  • S A
  • else
  • hn floor(n/2)
  • S1 mergeSort(A(1hn))
  • S2 mergeSort(A(hn1end))
  • S merge(S1,S2)
  • end

R(1) 0
R(n/2) to sort array of length n/2
R(n/2) to sort array of length n/2
n steps to merge two sorted arrays of total
length n
Recursive relation R(1)0, R(n) 2R(n/2) n
12
Rough Operation Count for MergeSort
  • The recursive relation for R
  • R(1)0, R(n) 2R(n/2) n
  • Claim For n2m, it is true that R(n) n log2(n)
  • Case (m0) true, since log2(1)0
  • Case (mk1 from mk)

Recursive relation
Induction hypothesis
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.
Write a Comment
User Comments (0)
About PowerShow.com