Data structures and algorithms - sorting algorithms

Preview:

Citation preview

Data Structures and Algorithms - Sorting algorithms

Abimbola IdowuThe Andela Institute

Introduction to Sorting Algorithms

Why sorting algorithms

3

• Efficient sorting is important for the use of other

algorithms such as search

• The way data is sorted affects how fast it can be

traversed or searched for

• Poor choice of algorithms affect the runtime of our

code

Classifications

• Computation complexity

• Memory Usage

• Stability

• Comparison sort...

4

Part 1 - Slow sort

Bubble Sort

• Loop through the array

• Compares each pair of adjacent elements

• Swaps if they are in wrong order

• Repeat until no swap is done

• Array is sorted

6

Pseudocode

7

procedure bubbleSort( A : list of sortable items ) n = length(A) repeat swapped = false for i = 1 to n-1 inclusive do /* if this pair is out of order */ if A[i-1] > A[i] then /* swap them and remember something changed */ swap( A[i-1], A[i] ) swapped = true end if end for until not swappedend procedure

Bubble sort complexity

8

Best Average Worst

n n2 n2

Insertion sort

• Loop through the array

• Pick an element in the array

• Find the location where it belongs in the array

• Continue till loops ends

• Array is sorted

9

Pseudocode

10

for i ← 1 to length(A) - 1 j ← i while j > 0 and A[j-1] > A[j] swap A[j] and A[j-1] j ← j - 1 end whileend for

Insertion sort complexity

11

Best Average Worst

n n2 n2

Why is slow slow

12

• Comparison is local

• Guarantee to always make a lot of

comparison

Part 2 - Medium Sort

Merge Sort

• Divide the array in sublist until each sublist

contains one elements

• Merge sublists until there are one

• Array is sorted

14

Pseudocode

15

function merge(left, right) var list result while notempty(left) and notempty(right) if first(left) <= first(right) append first(left) to result left = rest(left) else append first(right) to result right = rest(right) // either left or right may have elements left while notempty(left) append first(left) to result left = rest(left) while notempty(right) append first(right) to result right = rest(right) return result

Merge sort complexity

16

Best Average Worst

n n logn n logn

Next time

• Other types of medium sorts• Fast sorts

17

Recommended