CIS3023: Programming Fundamentals for CIS Majors II
Summer 2010
“The real focus here is bringing some sort of order.” --Janet Hubbell
Course Lecture Slides
24 May 2010
Ganesh Viswanathan
1. Rearrange a[0], a[1], …, a[n-1] into ascending order.
2. When done, a[0] <= a[1] <= … <= a[n-1]
3. a[0], a[1],…a[n] could be integers, doubles, characters, or objects
Sorting Algorithms
1.
Selection-based
• Selection sort
• Heap Sort
2.
Insertion-based
• Insertion Sort
• Shell Sort
3.
4.
•
•
•
Exchange-Based
Bubble Sort
Quick Sort
Merge-based
Merge Sort
All these are comparison-based sorting algorithms.
Selection Sort Algorithm
• List is sorted by selecting a list element and moving it to its proper position.
• Algorithm finds position of smallest element and moves it to the top of unsorted portion of list.
• Repeats process above until entire list is sorted.
Selection Sort Algorithm (Cont’d)
Figure 1: An array of 10 elements
Figure 2: Smallest element of unsorted array
Selection Sort Algorithm (Cont’d)
Figure 3: Swap elements list[0] and list[7]
Figure 4: Array after swapping list[0] and list[7]
Selection Sort Algorithm (Cont’d)
In-class exercise :
Complete Selection Sort and get the array fully sorted!
Show at each step: # array elements ,
# comparisons required, and
# exchanges performed.
Insertion Sort Algorithm
•
Based on technique of card players to arrange a hand
•
Player keeps cards picked up so far in sorted order
•
When the player picks up a new card
• Makes room for the new card
• Then inserts it in its proper place
Steps in Insertion Sort:
Inserting the Fourth
Array Element:
Compares adjacent array elements
Exchanges their values if they are out of order
Smaller values bubble up to the top of the array
Larger values sink to the bottom
Figure 1: Elements of array list during the first iteration
Figure 2: Elements of array list during the second iteration
Figure 3: Elements of array list during the third iteration
Figure 4: Elements of array list during the fourth iteration
“ To iterate is human, to recurse divine. ”
--L. Peter Deutsch
2 9 5 4 8 1 6 7 split
2 9 5 4 8 1 6 7 split split
2 9
2
5 4
9 5 4 merge
2 9 4 5 merge
2 4 5 9
8
8 1
1
1 8
6 7
6
6 7
1 6 7 8
7 merge
1 2 4 5 6 7 8 9 divide conquer
current1 current2
2 4 5 9 1 6 7 8
1
current3
(a) After moving 1 to temp
current1 current2
2 4 5 9 1 6 7 8
current1 current2
2 4 5 9 1 6 7 8
1 2 4 5 6 7 8
current3
(b) After moving all the elements in list2 to temp
to temp
1 2 4 5 6 7 8 9
current3
(c) After moving 9 to temp