Sorting

advertisement

CIS3023: Programming Fundamentals for CIS Majors II

Summer 2010

Sorting

“The real focus here is bringing some sort of order.” --Janet Hubbell

Course Lecture Slides

24 May 2010

Ganesh Viswanathan

Sorting

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:

Example

Inserting the Fourth

Array Element:

Bubble Sort Algorithm

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

Bubble Sort Algorithm (Cont’d)

Figure 1: Elements of array list during the first iteration

Figure 2: Elements of array list during the second iteration

Bubble Sort Algorithm (Cont’d)

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

Merge Sort

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

Merging two sorted lists

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

Download