Upload
dyanne
View
30
Download
2
Embed Size (px)
DESCRIPTION
Algorithm Design and Analysis (ADA). 242-535 , Semester 1 2013-2014. Objective asymptotic analysis of insertion sort. 3. Insertion Sort. Overview. 1. What is Sorting? 2. Insertion Sort. 1. What is Sorting?. Input : sequence < a 1, a 2, …, an> of numbers. - PowerPoint PPT Presentation
Citation preview
242-535 ADA: 3. Insertion Sort
1
• Objectiveo asymptotic analysis
of insertion sort
Algorithm Design and Analysis (ADA)
242-535, Semester 1 2014-2015
3. Insertion Sort
242-535 ADA: 3. Insertion Sort
2
1. What is Sorting?2. Insertion Sort
Overview
242-535 ADA: 3. Insertion Sort
3
Input: sequence <a1, a2, …, an> of numbers.
Output: permutation <a'1, a'2, …, a'n> suchthat a'1 ≤ a'2 ≤ … ≤ a'n
Example:Input: 8 2 4 9 3 6Output: 2 3 4 6 8 9
1. What is Sorting?
242-535 ADA: 3. Insertion Sort
4
o Sort a list of names.o Organize an MP3 library.o Display Google PageRank results.o List RSS feed in reverse chronological order.o Find the median. o Find the closest pair.o Binary search in a database.o Identify statistical outliers.o Find duplicates in a mailing list.o Data compression.o Computer graphics. o Computational biology.o Supply chain management.o Load balancing on a parallel computer.o . . .
Sorting is Essentialobvious applications
problems become easy once items are in sorted order
non-obvious applications
242-535 ADA: 3. Insertion Sort
5
• Applications have different sorting needs:o Stable?o Parallel?o Deterministic?o Keys all distinct?o Multiple key types?o Linked list or arrays?o Large or small items?o Is your array randomly ordered?o Need guaranteed performance?
Different Sorting Needs
242-535 ADA: 3. Insertion Sort
6
• Internal sortso Insertion sort, selection sort, bubblesort, shaker sorto Quicksort, mergesort, heapsort, samplesort, shellsorto Solitaire sort, red-black sort, splaysort, , ...
• External sortso Poly-phase mergesort, cascade-merge, oscillating sort
• String/radix sortso Distribution, MSD, LSD, 3-way string quicksort
• Parallel sortso Bitonic sort, Batcher even-odd sorto Smooth sort, cube sort, column sorto GPUsort
Many Different Sorting Algorithms
2. Insertion SortINSERTION-SORT (A, n) ⊳ A[1 . . n]
for j ← 2 to ndo key ← A[ j]
i ← j – 1while i > 0 and A[i] > key
do A[i+1] ← A[i]i ← i – 1
A[i+1] = key
“pseudocode”
sorted
i j
keyA:
1 n
Example of Insertion Sort
8 2 4 9 3 6
Example of Insertion Sort
8 2 4 9 3 6
Example of Insertion Sort
8 2 4 9 3 6
2 8 4 9 3 6
Example of Insertion Sort
8 2 4 9 3 6
2 8 4 9 3 6
Example of Insertion Sort
8 2 4 9 3 6
2 8 4 9 3 6
2 4 8 9 3 6
Example of Insertion Sort
8 2 4 9 3 6
2 8 4 9 3 6
2 4 8 9 3 6
Example of Insertion Sort
8 2 4 9 3 6
2 8 4 9 3 6
2 4 8 9 3 6
2 4 8 9 3 6
Example of Insertion Sort
8 2 4 9 3 6
2 8 4 9 3 6
2 4 8 9 3 6
2 4 8 9 3 6
Example of Insertion Sort
8 2 4 9 3 6
2 8 4 9 3 6
2 4 8 9 3 6
2 4 8 9 3 6
2 3 4 8 9 6
Example of Insertion Sort
8 2 4 9 3 6
2 8 4 9 3 6
2 4 8 9 3 6
2 4 8 9 3 6
2 3 4 8 9 6
Example of Insertion Sort
8 2 4 9 3 6
2 8 4 9 3 6
2 4 8 9 3 6
2 4 8 9 3 6
2 3 4 8 9 6
2 3 4 6 8 9 done
242-535 ADA: 3. Insertion Sort
19
void insertionSort(int[] A) // A[0 .. n-1]{(1) for (int j = 1; j < num.length; j++) { // start with 1 (not 2)(2) int key = num[j];(3) int i = j - 1; (4) while((i >= 0) && (A[i] < key)) {(5) A[i+1] = A[i];(6) i--;(7) }(8) A[i+1] = key;(9) }}
Insertion Sort Java Code
242-535 ADA: 3. Insertion Sort
20
Insertion Sort Structure Tree
for1-9
3
block1-9
while4-72
5
8
block4-7
6
242-535 ADA: 3. Insertion Sort
21
• Lines 2, 3, 5, 6, 8: each is O(1)
• Block of 4-7= O(1) + O(1) = O(1)
• For of 4-7 is:= O( (n-1) * 1) = O(n-1)= O(n), simplified
• Block of 1-9= O(1) + O(1) + O(n) + O(1) = O(n)
• For of 1-8 is:= O( (n-1) * n) = O(n2 - n)= O(n2), simplified
this is the hard part – assume the worse case wherethe loop has to move the most elements)
242-535 ADA: 3. Insertion Sort
22
• What can T() be?o Best case -- inner loop body never executed
• T(n) is a linear function
o Worst case -- inner loop body executed for all previous elements• T(n2) is a quadratic function
o Average case• tricky
Analyzing Insertion Sort