16
Algorithm Analysis Lakshmish Ramaswamy

Algorithm Analysis Lakshmish Ramaswamy. Insertion Sort Conceptual Logic Create a duplicate array Insert elements from original array into duplicate array

Embed Size (px)

DESCRIPTION

Trace [9, 3, 8, 12, 1, 5, 22, 18, 14, 2] [9] [3, 9] [3, 8, 9] [3, 8, 9, 12] [1, 3, 8, 9, 12] … [1, 2, 3, 5, 8, 9, 12, 14, 18, 22]

Citation preview

Page 1: Algorithm Analysis Lakshmish Ramaswamy. Insertion Sort Conceptual Logic Create a duplicate array Insert elements from original array into duplicate array

Algorithm Analysis

Lakshmish Ramaswamy

Page 2: Algorithm Analysis Lakshmish Ramaswamy. Insertion Sort Conceptual Logic Create a duplicate array Insert elements from original array into duplicate array

Insertion Sort• Conceptual Logic• Create a duplicate array• Insert elements from original array into

duplicate array (ith element in iteration i)• Maintain sortedness of duplicate array at

all times– May need to move existing elements to

accommodate the incoming element

Page 3: Algorithm Analysis Lakshmish Ramaswamy. Insertion Sort Conceptual Logic Create a duplicate array Insert elements from original array into duplicate array

Trace[9, 3, 8, 12, 1, 5, 22, 18, 14, 2][9][3, 9][3, 8, 9][3, 8, 9, 12][1, 3, 8, 9, 12]…[1, 2, 3, 5, 8, 9, 12, 14, 18, 22]

Page 4: Algorithm Analysis Lakshmish Ramaswamy. Insertion Sort Conceptual Logic Create a duplicate array Insert elements from original array into duplicate array

Insertion Sort Algorithmpublic static void InsertionSort(int[] Arr){int i, j, k, currElement;if(Arr.length == 1) return;for (i = 1; i < (Arr.length); i++){

currElement = Arr[i]; for(j = 0; j < i && Arr[j] <= currElement; j++); for(k = (i-1); k => j; k++)

Arr[k+1] = Arr[k]; Arr[j] = currElement;}return;}

Page 5: Algorithm Analysis Lakshmish Ramaswamy. Insertion Sort Conceptual Logic Create a duplicate array Insert elements from original array into duplicate array

Trace[9, 3, 8, 12, 1, 5, 22, 18, 14, 2]

Page 6: Algorithm Analysis Lakshmish Ramaswamy. Insertion Sort Conceptual Logic Create a duplicate array Insert elements from original array into duplicate array

Trace[9, 3, 8, 12, 1, 5, 22, 18, 14, 2][9, 3, 8, 12, 1, 5, 22, 18, 14, 2][3, 9, 8, 12, 1, 5, 22, 18, 14, 2][3, 8, 9, 12, 1, 5, 22, 18, 14, 2][3, 8, 9, 12, 1, 5, 22, 18, 14, 2][1, 3, 8, 9, 12, 5, 22, 18, 14, 2][1, 3, 5, 8, 9, 12, 22, 18, 14, 2][1, 3, 5, 8, 9, 12, 22, 18, 14, 2][1, 3, 5, 8, 9, 12, 18, 22, 14, 2][1, 3, 5, 8, 9, 12, 14, 18, 22, 2][1, 2, 3, 5, 8, 9, 12, 14, 18, 22]

Page 7: Algorithm Analysis Lakshmish Ramaswamy. Insertion Sort Conceptual Logic Create a duplicate array Insert elements from original array into duplicate array

Analysis• Constant cost for comparison and

assignment– Assume equal cost ‘c’ for simplicity

• For ith iteration– ‘t’ comparisons for some t <= (i-1)– i-t+1 assignments– Cost = c(i+1)

• Total cost = c(2 + 3 + ….+ N) = c/2*(N2-N-2)

• O(N2) algorithm

Page 8: Algorithm Analysis Lakshmish Ramaswamy. Insertion Sort Conceptual Logic Create a duplicate array Insert elements from original array into duplicate array

Bubble Sort

• Imitates bubbles raising through water• Compares two neighboring elements

– Swap if they are in the wrong order• Repeat the procedure (N-1) times

Page 9: Algorithm Analysis Lakshmish Ramaswamy. Insertion Sort Conceptual Logic Create a duplicate array Insert elements from original array into duplicate array

Bubble Sort Algorithmpublic static void BubbleSort(int[] Arr){int i, j;for(i = 0; i < (Arr.length-1); i++){for(j = (Arr.length-1); j > i; j--){if(Arr[j] < Arr[j-1])

swap(Arr[j], Arr[j-1]);}

}}

Page 10: Algorithm Analysis Lakshmish Ramaswamy. Insertion Sort Conceptual Logic Create a duplicate array Insert elements from original array into duplicate array

Trace[9, 3, 8, 12, 1, 5, 22, 18, 14, 2]

Page 11: Algorithm Analysis Lakshmish Ramaswamy. Insertion Sort Conceptual Logic Create a duplicate array Insert elements from original array into duplicate array

Analysis

• Constant time for comparison and swap• Outer loop is executed (N-1) times• For a particular i the inner loop is executed

N-i-1 times• # comparisons = (N-1) + (N-2) + … + 2

– N(N-1)/2 – 1• O(N2) algorithm

Page 12: Algorithm Analysis Lakshmish Ramaswamy. Insertion Sort Conceptual Logic Create a duplicate array Insert elements from original array into duplicate array

Merge

• Problem – Merge two sorted arrays such that the resultant array remains sorted

• Logic– Keep pointers to both arrays– Compare the current pointer elements of two

arrays– Place the one that is lowest and increment its

pointer

Page 13: Algorithm Analysis Lakshmish Ramaswamy. Insertion Sort Conceptual Logic Create a duplicate array Insert elements from original array into duplicate array

Merge Algorithmpublic static int[] Merge(int[] A1, int[] A2){int[] A3 = new int[A1.length+ A2.length];int i, j;while(i < A1.length && j < A2.length){if(i => A1.length){A3[i+j] = A2[j]; j++; }elseif (j => A2.length){A3[i+j] = A1[i]; i++; }elseif(A1[i] < A2[j]){A3[i+j] = A1[i]; i++; }else{A3[i+j] = A2[j]; j++; }}return(A3);}

Page 14: Algorithm Analysis Lakshmish Ramaswamy. Insertion Sort Conceptual Logic Create a duplicate array Insert elements from original array into duplicate array

Trace[1,3, 8, 9, 12] [2, 5, 14, 18, 22]

Page 15: Algorithm Analysis Lakshmish Ramaswamy. Insertion Sort Conceptual Logic Create a duplicate array Insert elements from original array into duplicate array

Merge Sort

• Recursive algorithm• Partition array at the center• Call merge sort on each part of the array• Call merge to combine the two parts

Page 16: Algorithm Analysis Lakshmish Ramaswamy. Insertion Sort Conceptual Logic Create a duplicate array Insert elements from original array into duplicate array

Trace

[9, 3, 8, 12, 1, 5, 22, 18]