Presentation is loading. Please wait.

Presentation is loading. Please wait.

Chapter 9: Algorithm Efficiency and Sorting MEASURING ALGORITHM EFFICIENCY SORTING ALGORITHMS CS 240 120.

Similar presentations


Presentation on theme: "Chapter 9: Algorithm Efficiency and Sorting MEASURING ALGORITHM EFFICIENCY SORTING ALGORITHMS CS 240 120."— Presentation transcript:

1

2 Chapter 9: Algorithm Efficiency and Sorting MEASURING ALGORITHM EFFICIENCY SORTING ALGORITHMS CS 240 120

3 CS 240 121 Algorithm Efficiency Efficient programs are important, but how is that efficiency measured? Function T(n) is said to be O(f(n)) if there are positive constants c and n 0 such that T(n)  c f(n) for every n  n 0. Example: n 3 + 3n 2 + 6n + 5 is O(n 3 ). (Use c = 15 and n 0 = 1.)Example: n 3 + 3n 2 + 6n + 5 is O(n 3 ). (Use c = 15 and n 0 = 1.) Example: n 2 + n logn is O(n 2 ). (Use c = 2 and n 0 = 1.)Example: n 2 + n logn is O(n 2 ). (Use c = 2 and n 0 = 1.) Time Complexity Terminology: Big-O g(n) r(n) ngngngng nrnrnrnr r(n) is O(g(n)) since (1)g(n) exceeds r(n) for all n-values past n g g(n) is O(r(n)) since (2)r(n) exceeds g(n) for all n-values past n r

4 CS 240 122 Both algorithms below have O(n 3 ) time complexity. (In fact, the execution time for Algorithm A is n 3 + n 2 + n, and the execution time for Algorithm B is n 3 + 101n 2 + n.) Demonstrating The Big-O Concept 1,110 11,110 1,010,100 2,010,100 1,001,001,000 1,101,001,000 1,000,100,010,000 1,010,100,010,000 1,000,010,000,100,000 1,001,010,000,100,000 1,000,001,000,001,000,000 1,000,101,000,001,000,000 10 100 1,000 10,000 100,000 1,000,000 A A B BALGORITHMInputSizen

5 CS 240 123 Both algorithms below have O(n 2 ) time complexity. (In fact, the execution time for Algorithm C is n 2 + 2n + 3, and the execution time for Algorithm D is n 2 + 1002n + 3.) A Second Big-O Demonstration 123 10,123 10,203 110,203 1,002,003 2,002,003 100,020,003 110,020,003 10,000,200,003 10,100,200,003 1,000,002,000,003 1,001,002,000,003 10 100 1,000 10,000 100,000 1,000,000 C C D DALGORITHMInputSizen

6 CS 240 124 Both algorithms below have O(nlogn) time complexity. (In fact, the execution time for Algorithm E is nlogn + 5n, and the execution time for Algorithm F is nlogn + 105n. Note that the linear term for Algorithm F will dominate until n = 2 105.) One More, Rather Complex Big-O Demonstration 90 1,090 1,200 11,200 15,000 115,000 190,000 1,190,000 2,200,000 12,200,000 25,000,000 125,000,000 10 100 1,000 10,000 100,000 1,000,000 E E F FALGORITHMInputSizen

7 CS 240 125 If T(n) is O(f(n)), then f(n) is basically a cap on how bad T(n) will behave when n gets big. Big-O Represents An Upper Boundg(n)r(n) b(n)p(n) y(n)v(n) Is g(n) O(r(n))? Is r(n) O(g(n))? Is v(n) O(y(n))? Is y(n) O(v(n))? Is b(n) O(p(n))? Is p(n) O(b(n))?

8 CS 240 126 Big-O Comparisons O(logn) O(n) O(n 2 ) O(nlogn) O(2 n )

9 CS 240 127 Computation Model For Algorithm Analysis To formally analyze the performance of algorithms, we will use a computational model with a couple of simplifying assumptions: Each simple instruction (assignment, I/O, comparison, addition, multiplication, etc.) is assumed to execute in a single time unit. Memory is assumed to be limitless, so there is always room to store whatever data is needed. The size of the input, n, will normally be used as our main variable, and we’ll primarily be interested in “worst case” scenarios.

10 CS 240 128 General Rules For Running-Time Calculation Thus, the total running time is 15n time units, i.e., this part of the program is O(n). Example: for (i = 0; i < n; i++) //n iterations for (i = 0; i < n; i++) //n iterations A[i] = (1-t)*X[i] + t*Y[i]; //15 time units per iter. A[i] = (1-t)*X[i] + t*Y[i]; //15 time units per iter. //1 assignment/increment; //1 assignment/increment; //1 comparison;1 addition; //1 comparison;1 addition; //1 subtraction; //1 subtraction; //2 multiplications; 3 //2 multiplications; 3 //array accesses (each w/1 //array accesses (each w/1 //multiplication, 1 //multiplication, 1 //addition, and 1 memory //addition, and 1 memory //retrieval/assignment) //retrieval/assignment) Rule One: Loops The running time of a loop is at most the running time of the statements inside the loop, multiplied by the number of iterations.

11 CS 240 129 Rule Two: Nested Loops The running time of a nested loop is at most the running time of the statements inside the innermost loop, multiplied by the product of the number of iterations of all of the loops. Total running time: n(2+n(16)) = 16n 2 +2n time units, i.e., this code is O(n 2 ). Example: for (i = 0; i < n; i++) // n iterations; 2TU each for (j = 0; j < n; j++) // n iterations; 2TU each for (j = 0; j < n; j++) // n iterations; 2TU each C[i,j] = j*A[i] + i*B[j]; // 14 time units/iter. C[i,j] = j*A[i] + i*B[j]; // 14 time units/iter. Total running time:  i=0,n-1 (2+  j=i, n-1 21) =  i=0,n-1 (2+21(n- i)) =  i=0,n-1 2 +  i=0,n-1 21n -  i=0,n-1 21i) = 2n + 21n 2 – 21[½n(n-1)] = 10.5n 2 – 8.5n time units, i.e., this code is also O(n 2 ). More Complex Example: for (i = 0; i < n; i++) // n iter.; 2TU each for (j = i; j < n; j++) // n-i iter; 2TU each for (j = i; j < n; j++) // n-i iter; 2TU each C[j,i] = C[i,j] = j*A[i]+i*B[j]; // 19TU/iteration C[j,i] = C[i,j] = j*A[i]+i*B[j]; // 19TU/iteration

12 CS 240 130 Rule Three: Consecutive Statements The running time of a sequence of statements is merely the sum of the running times of the individual statements. Total running time: 16n 2 + 30n time units, i.e., this code is O(n 2 ). Example: for (i = 0; i < n; i++)//28n TU for for (i = 0; i < n; i++)//28n TU for {//entire loop {//entire loop A[i] = (1-t)*X[i] + t*Y[i]; A[i] = (1-t)*X[i] + t*Y[i]; B[i] = (1-s)*X[i] + s*Y[i]; B[i] = (1-s)*X[i] + s*Y[i]; } for (i = 0; i < n; i++)//16n^2 +2n TU for (i = 0; i < n; i++)//16n^2 +2n TU for (j = 0; j < n; j++)//for entire for (j = 0; j < n; j++)//for entire C[i,j] = j*A[i] + i*B[j];//nested loop C[i,j] = j*A[i] + i*B[j];//nested loop

13 CS 240 131 Rule Four: Conditional Statements The running time of an if-else statement is at most the running time of the conditional test, added to the maximum of the running times of the if and else blocks of statements. Total running time: 2 + max(1 + (4 + 3 + 1)n + 2, 1) = 8n + 5 time units, i.e., this code is O(n). Example: if (amt > cost + tax) // 2 time units if (amt > cost + tax) // 2 time units { count = 0; // 1 time unit count = 0; // 1 time unit while ((count cost+tax)) // 4 TUs per iter. while ((count cost+tax)) // 4 TUs per iter. { // At most n iter. { // At most n iter. amt -= (cost + tax); // 3 time units amt -= (cost + tax); // 3 time units count++; // 1 time units count++; // 1 time units } cout << “CAPACITY:” << count; // 2 time units cout << “CAPACITY:” << count; // 2 time units } else else cout << “INSUFFICIENT FUNDS”; // 1 time unit cout << “INSUFFICIENT FUNDS”; // 1 time unit

14 CS 240 132 template template int binsrch(const etype A[], const etype x, const int n) { int low = 0, high = n-1; // 3 time units int low = 0, high = n-1; // 3 time units int middle; int middle; while (low <= high) // At most log(n) iterations; 1 TU each while (low <= high) // At most log(n) iterations; 1 TU each { middle = (low + high)/2; // 3 time units middle = (low + high)/2; // 3 time units if (A[middle] < x) // << if (A[middle] < x) // << low = middle + 1; // << Worst case: First if condition low = middle + 1; // << Worst case: First if condition else if (A[middle] > x) // x) // << is false, but second is true, high = middle - 1; // << yielding 10 TU per iteration high = middle - 1; // << yielding 10 TU per iteration else // << else // << return middle; // << Last iter. has return (1TU) return middle; // << Last iter. has return (1TU) } return -1;// Return impossible index for unsuccessful search. return -1;// Return impossible index for unsuccessful search.} template template int binsrch(const etype A[], const etype x, const int n) { int low = 0, high = n-1; // 3 time units int low = 0, high = n-1; // 3 time units int middle; int middle; while (low <= high) // At most log(n) iterations; 1 TU each while (low <= high) // At most log(n) iterations; 1 TU each { middle = (low + high)/2; // 3 time units middle = (low + high)/2; // 3 time units if (A[middle] < x) // << if (A[middle] < x) // << low = middle + 1; // << Worst case: First if condition low = middle + 1; // << Worst case: First if condition else if (A[middle] > x) // x) // << is false, but second is true, high = middle - 1; // << yielding 10 TU per iteration high = middle - 1; // << yielding 10 TU per iteration else // << else // << return middle; // << Last iter. has return (1TU) return middle; // << Last iter. has return (1TU) } return -1;// Return impossible index for unsuccessful search. return -1;// Return impossible index for unsuccessful search.} Analyzing A Whole Function: Binary Search Note that the loop will, in the worst case, keep dividing the distance between low and high in half until low and high are equal, i.e., it will iterate at most logn times. Thus, the total running time is: 14logn + 4 time units, i.e., this code is O(logn).

15 CS 240 133 template template etype SuperFreq(const etype A[], const int n) { etype bestElement = A[0]; // 4 time units etype bestElement = A[0]; // 4 time units int bestFreq = 0;// 1 time unit int bestFreq = 0;// 1 time unit int currFreq; int currFreq; for (i = 0; i < n; i++)// n iterations; 2 TU each for (i = 0; i < n; i++)// n iterations; 2 TU each { currFreq = 0;// 1 time unit currFreq = 0;// 1 time unit for (j = i; j < n; j++)// n-i iterations; 2 TU each for (j = i; j < n; j++)// n-i iterations; 2 TU each if (A[i] == A[j])// 7 time unit if (A[i] == A[j])// 7 time unit currFreq++;// 1 time unit currFreq++;// 1 time unit if (currFreq > bestFreq)// 1 time unit if (currFreq > bestFreq)// 1 time unit bestElement = A[i];// 4 time units bestElement = A[i];// 4 time units } return bestElement;// 1 time unit return bestElement;// 1 time unit} Analyzing Another Function: SuperFreq Note that the function is obviously O(n 2 ) due to its familiar nested loop structure. Specifically, its worst- case running time is 4 + 1 +  i=0,n-1 (2 + 1+  j=i,n-1 (2 + 7 + 1) + 1 + 4) + 1 = 5 +  i=0,n-1 (3 + 11(n-i) + 5) + 1 = 5 +  i=0,n-1 (11n - 11i + 8) + 1 = 11n 2 -11[½n(n-1)] + 8n +6 = 5.5n 2 + +2.5n + 6).

16 CS 240 134 humongInt pow(const humongInt &val, const humongInt &n) { if (n == 0) if (n == 0) return humongInt(0); return humongInt(0); if (n == 1) if (n == 1) return val; return val; if (n % 2 == 0) if (n % 2 == 0) return pow(val*val, n/2); return pow(val*val, n/2); return pow(val*val, n/2) * val; return pow(val*val, n/2) * val;} What About Recursion? If T(k) is the time it takes to execute humongInt(val, k), then notice that T(1) = 3 and that for larger values, T(k)  8 + T(k/2). This tells us that T(k)  8 + 8 + T(k/4)  8 + 8 + 8 + T(k/8)  …  8logn +T(1) = 8logn + 3. So the function is O(logn).

17 CS 240 135 Sorting Algorithms As our principal example for examining algorithm efficiency, let’s explore several of the algorithms that have been developed for sorting an array. // Generic Sort Driver Program #include #include using namespace std; int const MAX_LIST_SIZE = 30; typedef string elt; typedef elt list[MAX_LIST_SIZE]; void sort(list L, int n); void main() { list L; list L; int size = 0; int size = 0; ifstream file; ifstream file; file.open(“Name.txt”); file.open(“Name.txt”); file >> L[0]; file >> L[0]; while (!file.eof()) while (!file.eof()) { size++; size++; file >> L[size]; file >> L[size]; } sort(L, size); sort(L, size);} Moe Edy Zeb Ort Bob Wes Ann Uma Quo Kit Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Moe Edy Zeb Ort Bob Wes Ann Uma Quo Kit Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Names.txt

18 CS 240 136 Bubble Sort void sort(list L, int n) { int j, k = 0; int j, k = 0; bool exchange_made = true; bool exchange_made = true; elt temp; elt temp; // Make up to n-1 passes through the // Make up to n-1 passes through the // array; exit early if no exchanges // array; exit early if no exchanges // are made on the previous pass. // are made on the previous pass. while ((k < n-1) && exchange_made) while ((k < n-1) && exchange_made) { exchange_made = false; exchange_made = false; ++k; ++k; for (j = 0; j < n-k; ++j)// n-k comparisons for (j = 0; j < n-k; ++j)// n-k comparisons {// on the kth pass {// on the kth pass if (L[j] > L[j+1]) if (L[j] > L[j+1]) { temp = L[j];// Exchange must be made temp = L[j];// Exchange must be made L[j] = L[j+1]; L[j] = L[j+1]; L[j+1] = temp; L[j+1] = temp; exchange_made = true; exchange_made = true; } } }}

19 CS 240 137 Bubble Sort: Step-By-Step Example Moe Edy Zeb Ort Bob Wes Ann Uma Quo Kit Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Edy Moe Zeb Ort Bob Wes Ann Uma Quo Kit Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Edy Moe Ort Zeb Bob Wes Ann Uma Quo Kit Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Edy Moe Ort Bob Zeb Wes Ann Uma Quo Kit Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Edy Moe Ort Bob Wes Zeb Ann Uma Quo Kit Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Edy Moe Ort Bob Wes Ann Zeb Uma Quo Kit Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Edy Moe Ort Bob Wes Ann Uma Zeb Quo Kit Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Edy Moe Ort Bob Wes Ann Uma Quo Zeb Kit Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Edy Moe Ort Bob Wes Ann Uma Quo Kit Zeb Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Edy Moe Ort Bob Wes Ann Uma Quo Kit Fly Zeb Vin Xon Gus Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Edy Moe Ort Bob Wes Ann Uma Quo Kit Fly Vin Zeb Xon Gus Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Edy Moe Ort Bob Wes Ann Uma Quo Kit Fly Vin Xon Zeb Gus Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Edy Moe Ort Bob Wes Ann Uma Quo Kit Fly Vin Xon Gus Zeb Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Edy Moe Ort Bob Wes Ann Uma Quo Kit Fly Vin Xon Gus Joe Zeb Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Edy Moe Ort Bob Wes Ann Uma Quo Kit Fly Vin Xon Gus Joe Nan Zeb Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Edy Moe Ort Bob Wes Ann Uma Quo Kit Fly Vin Xon Gus Joe Nan Sue Zeb Cub Ida Yul Ren Dan Lex Pez Hal Tia Edy Moe Ort Bob Wes Ann Uma Quo Kit Fly Vin Xon Gus Joe Nan Sue Cub Zeb Ida Yul Ren Dan Lex Pez Hal Tia Edy Moe Ort Bob Wes Ann Uma Quo Kit Fly Vin Xon Gus Joe Nan Sue Cub Ida Zeb Yul Ren Dan Lex Pez Hal Tia Edy Moe Ort Bob Wes Ann Uma Quo Kit Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Zeb Ren Dan Lex Pez Hal Tia Edy Moe Ort Bob Wes Ann Uma Quo Kit Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Ren Zeb Dan Lex Pez Hal Tia Edy Moe Ort Bob Wes Ann Uma Quo Kit Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Ren Dan Zeb Lex Pez Hal Tia Edy Moe Ort Bob Wes Ann Uma Quo Kit Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Ren Dan Lex Zeb Pez Hal Tia Edy Moe Ort Bob Wes Ann Uma Quo Kit Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Zeb Hal Tia Edy Moe Ort Bob Wes Ann Uma Quo Kit Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Zeb Tia Edy Moe Ort Bob Wes Ann Uma Quo Kit Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Zeb Edy Moe Bob Ort Wes Ann Uma Quo Kit Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Zeb Edy Moe Bob Ort Ann Wes Uma Quo Kit Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Zeb Edy Moe Bob Ort Ann Uma Wes Quo Kit Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Zeb

20 CS 240 138 Edy Moe Bob Ort Ann Uma Quo Wes Kit Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Zeb Edy Moe Bob Ort Ann Uma Quo Kit Wes Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Zeb Edy Moe Bob Ort Ann Uma Quo Kit Fly Wes Vin Xon Gus Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Zeb Edy Moe Bob Ort Ann Uma Quo Kit Fly Vin Wes Xon Gus Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Zeb Edy Moe Bob Ort Ann Uma Quo Kit Fly Vin Wes Gus Xon Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Zeb Edy Moe Bob Ort Ann Uma Quo Kit Fly Vin Wes Gus Joe Xon Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Zeb Edy Moe Bob Ort Ann Uma Quo Kit Fly Vin Wes Gus Joe Nan Xon Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Zeb Edy Moe Bob Ort Ann Uma Quo Kit Fly Vin Wes Gus Joe Nan Sue Xon Cub Ida Yul Ren Dan Lex Pez Hal Tia Zeb Edy Moe Bob Ort Ann Uma Quo Kit Fly Vin Wes Gus Joe Nan Sue Cub Xon Ida Yul Ren Dan Lex Pez Hal Tia Zeb Edy Moe Bob Ort Ann Uma Quo Kit Fly Vin Wes Gus Joe Nan Sue Cub Ida Xon Yul Ren Dan Lex Pez Hal Tia Zeb Edy Moe Bob Ort Ann Uma Quo Kit Fly Vin Wes Gus Joe Nan Sue Cub Ida Xon Ren Yul Dan Lex Pez Hal Tia Zeb Edy Moe Bob Ort Ann Uma Quo Kit Fly Vin Wes Gus Joe Nan Sue Cub Ida Xon Ren Dan Yul Lex Pez Hal Tia Zeb Edy Moe Bob Ort Ann Uma Quo Kit Fly Vin Wes Gus Joe Nan Sue Cub Ida Xon Ren Dan Lex Yul Pez Hal Tia Zeb Edy Moe Bob Ort Ann Uma Quo Kit Fly Vin Wes Gus Joe Nan Sue Cub Ida Xon Ren Dan Lex Pez Yul Hal Tia Zeb Edy Moe Bob Ort Ann Uma Quo Kit Fly Vin Wes Gus Joe Nan Sue Cub Ida Xon Ren Dan Lex Pez Hal Yul Tia Zeb Edy Moe Bob Ort Ann Uma Quo Kit Fly Vin Wes Gus Joe Nan Sue Cub Ida Xon Ren Dan Lex Pez Hal Tia Yul Zeb Edy Bob Moe Ort Ann Uma Quo Kit Fly Vin Wes Gus Joe Nan Sue Cub Ida Xon Ren Dan Lex Pez Hal Tia Yul Zeb Edy Bob Moe Ann Ort Uma Quo Kit Fly Vin Wes Gus Joe Nan Sue Cub Ida Xon Ren Dan Lex Pez Hal Tia Yul Zeb Edy Bob Moe Ann Ort Quo Uma Kit Fly Vin Wes Gus Joe Nan Sue Cub Ida Xon Ren Dan Lex Pez Hal Tia Yul Zeb Edy Bob Moe Ann Ort Quo Kit Uma Fly Vin Wes Gus Joe Nan Sue Cub Ida Xon Ren Dan Lex Pez Hal Tia Yul Zeb Edy Bob Moe Ann Ort Quo Kit Fly Uma Vin Wes Gus Joe Nan Sue Cub Ida Xon Ren Dan Lex Pez Hal Tia Yul Zeb Edy Bob Moe Ann Ort Quo Kit Fly Uma Vin Gus Wes Joe Nan Sue Cub Ida Xon Ren Dan Lex Pez Hal Tia Yul Zeb Edy Bob Moe Ann Ort Quo Kit Fly Uma Vin Gus Joe Wes Nan Sue Cub Ida Xon Ren Dan Lex Pez Hal Tia Yul Zeb Edy Bob Moe Ann Ort Quo Kit Fly Uma Vin Gus Joe Nan Wes Sue Cub Ida Xon Ren Dan Lex Pez Hal Tia Yul Zeb Edy Bob Moe Ann Ort Quo Kit Fly Uma Vin Gus Joe Nan Sue Wes Cub Ida Xon Ren Dan Lex Pez Hal Tia Yul Zeb Edy Bob Moe Ann Ort Quo Kit Fly Uma Vin Gus Joe Nan Sue Cub Wes Ida Xon Ren Dan Lex Pez Hal Tia Yul Zeb Edy Bob Moe Ann Ort Quo Kit Fly Uma Vin Gus Joe Nan Sue Cub Ida Wes Xon Ren Dan Lex Pez Hal Tia Yul Zeb Edy Bob Moe Ann Ort Quo Kit Fly Uma Vin Gus Joe Nan Sue Cub Ida Wes Ren Xon Dan Lex Pez Hal Tia Yul Zeb Edy Bob Moe Ann Ort Quo Kit Fly Uma Vin Gus Joe Nan Sue Cub Ida Wes Ren Dan Xon Lex Pez Hal Tia Yul Zeb Edy Bob Moe Ann Ort Quo Kit Fly Uma Vin Gus Joe Nan Sue Cub Ida Wes Ren Dan Lex Xon Pez Hal Tia Yul Zeb Edy Bob Moe Ann Ort Quo Kit Fly Uma Vin Gus Joe Nan Sue Cub Ida Wes Ren Dan Lex Pez Xon Hal Tia Yul Zeb

21 CS 240 139 Edy Bob Moe Ann Ort Quo Kit Fly Uma Vin Gus Joe Nan Sue Cub Ida Wes Ren Dan Lex Pez Hal Xon Tia Yul Zeb Edy Bob Moe Ann Ort Quo Kit Fly Uma Vin Gus Joe Nan Sue Cub Ida Wes Ren Dan Lex Pez Hal Tia Xon Yul Zeb Bob Edy Moe Ann Ort Quo Kit Fly Uma Vin Gus Joe Nan Sue Cub Ida Wes Ren Dan Lex Pez Hal Tia Xon Yul Zeb Bob Edy Ann Moe Ort Quo Kit Fly Uma Vin Gus Joe Nan Sue Cub Ida Wes Ren Dan Lex Pez Hal Tia Xon Yul Zeb Bob Edy Ann Moe Ort Kit Quo Fly Uma Vin Gus Joe Nan Sue Cub Ida Wes Ren Dan Lex Pez Hal Tia Xon Yul Zeb Bob Edy Ann Moe Ort Kit Fly Quo Uma Vin Gus Joe Nan Sue Cub Ida Wes Ren Dan Lex Pez Hal Tia Xon Yul Zeb Bob Edy Ann Moe Ort Kit Fly Quo Uma Gus Vin Joe Nan Sue Cub Ida Wes Ren Dan Lex Pez Hal Tia Xon Yul Zeb Bob Edy Ann Moe Ort Kit Fly Quo Uma Gus Joe Vin Nan Sue Cub Ida Wes Ren Dan Lex Pez Hal Tia Xon Yul Zeb Bob Edy Ann Moe Ort Kit Fly Quo Uma Gus Joe Nan Vin Sue Cub Ida Wes Ren Dan Lex Pez Hal Tia Xon Yul Zeb Bob Edy Ann Moe Ort Kit Fly Quo Uma Gus Joe Nan Sue Vin Cub Ida Wes Ren Dan Lex Pez Hal Tia Xon Yul Zeb Bob Edy Ann Moe Ort Kit Fly Quo Uma Gus Joe Nan Sue Cub Vin Ida Wes Ren Dan Lex Pez Hal Tia Xon Yul Zeb Bob Edy Ann Moe Ort Kit Fly Quo Uma Gus Joe Nan Sue Cub Ida Vin Wes Ren Dan Lex Pez Hal Tia Xon Yul Zeb Bob Edy Ann Moe Ort Kit Fly Quo Uma Gus Joe Nan Sue Cub Ida Vin Ren Wes Dan Lex Pez Hal Tia Xon Yul Zeb Bob Edy Ann Moe Ort Kit Fly Quo Uma Gus Joe Nan Sue Cub Ida Vin Ren Dan Wes Lex Pez Hal Tia Xon Yul Zeb Bob Edy Ann Moe Ort Kit Fly Quo Uma Gus Joe Nan Sue Cub Ida Vin Ren Dan Lex Wes Pez Hal Tia Xon Yul Zeb Bob Edy Ann Moe Ort Kit Fly Quo Uma Gus Joe Nan Sue Cub Ida Vin Ren Dan Lex Pez Wes Hal Tia Xon Yul Zeb Bob Edy Ann Moe Ort Kit Fly Quo Uma Gus Joe Nan Sue Cub Ida Vin Ren Dan Lex Pez Hal Wes Tia Xon Yul Zeb Bob Edy Ann Moe Ort Kit Fly Quo Uma Gus Joe Nan Sue Cub Ida Vin Ren Dan Lex Pez Hal Tia Wes Xon Yul Zeb Bob Ann Edy Moe Ort Kit Fly Quo Uma Gus Joe Nan Sue Cub Ida Vin Ren Dan Lex Pez Hal Tia Wes Xon Yul Zeb Bob Ann Edy Moe Kit Ort Fly Quo Uma Gus Joe Nan Sue Cub Ida Vin Ren Dan Lex Pez Hal Tia Wes Xon Yul Zeb Bob Ann Edy Moe Kit Fly Ort Quo Uma Gus Joe Nan Sue Cub Ida Vin Ren Dan Lex Pez Hal Tia Wes Xon Yul Zeb Bob Ann Edy Moe Kit Fly Ort Quo Gus Uma Joe Nan Sue Cub Ida Vin Ren Dan Lex Pez Hal Tia Wes Xon Yul Zeb Bob Ann Edy Moe Kit Fly Ort Quo Gus Joe Uma Nan Sue Cub Ida Vin Ren Dan Lex Pez Hal Tia Wes Xon Yul Zeb Bob Ann Edy Moe Kit Fly Ort Quo Gus Joe Nan Uma Sue Cub Ida Vin Ren Dan Lex Pez Hal Tia Wes Xon Yul Zeb Bob Ann Edy Moe Kit Fly Ort Quo Gus Joe Nan Sue Uma Cub Ida Vin Ren Dan Lex Pez Hal Tia Wes Xon Yul Zeb Bob Ann Edy Moe Kit Fly Ort Quo Gus Joe Nan Sue Cub Uma Ida Vin Ren Dan Lex Pez Hal Tia Wes Xon Yul Zeb Bob Ann Edy Moe Kit Fly Ort Quo Gus Joe Nan Sue Cub Ida Uma Vin Ren Dan Lex Pez Hal Tia Wes Xon Yul Zeb

22 CS 240 140 Bob Ann Edy Moe Kit Fly Ort Quo Gus Joe Nan Sue Cub Ida Uma Ren Vin Dan Lex Pez Hal Tia Wes Xon Yul Zeb Bob Ann Edy Moe Kit Fly Ort Quo Gus Joe Nan Sue Cub Ida Uma Ren Dan Vin Lex Pez Hal Tia Wes Xon Yul Zeb Bob Ann Edy Moe Kit Fly Ort Quo Gus Joe Nan Sue Cub Ida Uma Ren Dan Lex Vin Pez Hal Tia Wes Xon Yul Zeb Bob Ann Edy Moe Kit Fly Ort Quo Gus Joe Nan Sue Cub Ida Uma Ren Dan Lex Pez Vin Hal Tia Wes Xon Yul Zeb Bob Ann Edy Moe Kit Fly Ort Quo Gus Joe Nan Sue Cub Ida Uma Ren Dan Lex Pez Hal Vin Tia Wes Xon Yul Zeb Bob Ann Edy Moe Kit Fly Ort Quo Gus Joe Nan Sue Cub Ida Uma Ren Dan Lex Pez Hal Tia Vin Wes Xon Yul Zeb Ann Bob Edy Moe Kit Fly Ort Quo Gus Joe Nan Sue Cub Ida Uma Ren Dan Lex Pez Hal Tia Vin Wes Xon Yul Zeb Ann Bob Edy Kit Moe Fly Ort Quo Gus Joe Nan Sue Cub Ida Uma Ren Dan Lex Pez Hal Tia Vin Wes Xon Yul Zeb Ann Bob Edy Kit Fly Moe Ort Quo Gus Joe Nan Sue Cub Ida Uma Ren Dan Lex Pez Hal Tia Vin Wes Xon Yul Zeb Ann Bob Edy Kit Fly Moe Ort Gus Quo Joe Nan Sue Cub Ida Uma Ren Dan Lex Pez Hal Tia Vin Wes Xon Yul Zeb Ann Bob Edy Kit Fly Moe Ort Gus Joe Quo Nan Sue Cub Ida Uma Ren Dan Lex Pez Hal Tia Vin Wes Xon Yul Zeb Ann Bob Edy Kit Fly Moe Ort Gus Joe Nan Quo Sue Cub Ida Uma Ren Dan Lex Pez Hal Tia Vin Wes Xon Yul Zeb Ann Bob Edy Kit Fly Moe Ort Gus Joe Nan Quo Cub Sue Ida Uma Ren Dan Lex Pez Hal Tia Vin Wes Xon Yul Zeb Ann Bob Edy Kit Fly Moe Ort Gus Joe Nan Quo Cub Ida Sue Uma Ren Dan Lex Pez Hal Tia Vin Wes Xon Yul Zeb Ann Bob Edy Kit Fly Moe Ort Gus Joe Nan Quo Cub Ida Sue Ren Uma Dan Lex Pez Hal Tia Vin Wes Xon Yul Zeb Ann Bob Edy Kit Fly Moe Ort Gus Joe Nan Quo Cub Ida Sue Ren Dan Uma Lex Pez Hal Tia Vin Wes Xon Yul Zeb Ann Bob Edy Kit Fly Moe Ort Gus Joe Nan Quo Cub Ida Sue Ren Dan Lex Uma Pez Hal Tia Vin Wes Xon Yul Zeb Ann Bob Edy Kit Fly Moe Ort Gus Joe Nan Quo Cub Ida Sue Ren Dan Lex Pez Uma Hal Tia Vin Wes Xon Yul Zeb Ann Bob Edy Kit Fly Moe Ort Gus Joe Nan Quo Cub Ida Sue Ren Dan Lex Pez Hal Uma Tia Vin Wes Xon Yul Zeb Ann Bob Edy Kit Fly Moe Ort Gus Joe Nan Quo Cub Ida Sue Ren Dan Lex Pez Hal Tia Uma Vin Wes Xon Yul Zeb Ann Bob Edy Fly Kit Moe Ort Gus Joe Nan Quo Cub Ida Sue Ren Dan Lex Pez Hal Tia Uma Vin Wes Xon Yul Zeb Ann Bob Edy Fly Kit Moe Gus Ort Joe Nan Quo Cub Ida Sue Ren Dan Lex Pez Hal Tia Uma Vin Wes Xon Yul Zeb Ann Bob Edy Fly Kit Moe Gus Joe Ort Nan Quo Cub Ida Sue Ren Dan Lex Pez Hal Tia Uma Vin Wes Xon Yul Zeb Ann Bob Edy Fly Kit Moe Gus Joe Nan Ort Quo Cub Ida Sue Ren Dan Lex Pez Hal Tia Uma Vin Wes Xon Yul Zeb Ann Bob Edy Fly Kit Moe Gus Joe Nan Ort Cub Quo Ida Sue Ren Dan Lex Pez Hal Tia Uma Vin Wes Xon Yul Zeb Ann Bob Edy Fly Kit Moe Gus Joe Nan Ort Cub Ida Quo Sue Ren Dan Lex Pez Hal Tia Uma Vin Wes Xon Yul Zeb

23 CS 240 141 Ann Bob Edy Fly Kit Moe Gus Joe Nan Ort Cub Ida Quo Ren Sue Dan Lex Pez Hal Tia Uma Vin Wes Xon Yul Zeb Ann Bob Edy Fly Kit Moe Gus Joe Nan Ort Cub Ida Quo Ren Dan Sue Lex Pez Hal Tia Uma Vin Wes Xon Yul Zeb Ann Bob Edy Fly Kit Moe Gus Joe Nan Ort Cub Ida Quo Ren Dan Lex Sue Pez Hal Tia Uma Vin Wes Xon Yul Zeb Ann Bob Edy Fly Kit Moe Gus Joe Nan Ort Cub Ida Quo Ren Dan Lex Pez Sue Hal Tia Uma Vin Wes Xon Yul Zeb Ann Bob Edy Fly Kit Moe Gus Joe Nan Ort Cub Ida Quo Ren Dan Lex Pez Hal Sue Tia Uma Vin Wes Xon Yul Zeb Ann Bob Edy Fly Kit Gus Moe Joe Nan Ort Cub Ida Quo Ren Dan Lex Pez Hal Sue Tia Uma Vin Wes Xon Yul Zeb Ann Bob Edy Fly Kit Gus Joe Moe Nan Ort Cub Ida Quo Ren Dan Lex Pez Hal Sue Tia Uma Vin Wes Xon Yul Zeb Ann Bob Edy Fly Kit Gus Joe Moe Nan Cub Ort Ida Quo Ren Dan Lex Pez Hal Sue Tia Uma Vin Wes Xon Yul Zeb Ann Bob Edy Fly Kit Gus Joe Moe Nan Cub Ida Ort Quo Ren Dan Lex Pez Hal Sue Tia Uma Vin Wes Xon Yul Zeb Ann Bob Edy Fly Kit Gus Joe Moe Nan Cub Ida Ort Quo Dan Ren Lex Pez Hal Sue Tia Uma Vin Wes Xon Yul Zeb Ann Bob Edy Fly Kit Gus Joe Moe Nan Cub Ida Ort Quo Dan Lex Ren Pez Hal Sue Tia Uma Vin Wes Xon Yul Zeb Ann Bob Edy Fly Kit Gus Joe Moe Nan Cub Ida Ort Quo Dan Lex Pez Ren Hal Sue Tia Uma Vin Wes Xon Yul Zeb Ann Bob Edy Fly Kit Gus Joe Moe Nan Cub Ida Ort Quo Dan Lex Pez Hal Ren Sue Tia Uma Vin Wes Xon Yul Zeb Ann Bob Edy Fly Gus Kit Joe Moe Nan Cub Ida Ort Quo Dan Lex Pez Hal Ren Sue Tia Uma Vin Wes Xon Yul Zeb Ann Bob Edy Fly Gus Joe Kit Moe Nan Cub Ida Ort Quo Dan Lex Pez Hal Ren Sue Tia Uma Vin Wes Xon Yul Zeb Ann Bob Edy Fly Gus Joe Kit Moe Cub Nan Ida Ort Quo Dan Lex Pez Hal Ren Sue Tia Uma Vin Wes Xon Yul Zeb Ann Bob Edy Fly Gus Joe Kit Moe Cub Ida Nan Ort Quo Dan Lex Pez Hal Ren Sue Tia Uma Vin Wes Xon Yul Zeb Ann Bob Edy Fly Gus Joe Kit Moe Cub Ida Nan Ort Dan Quo Lex Pez Hal Ren Sue Tia Uma Vin Wes Xon Yul Zeb Ann Bob Edy Fly Gus Joe Kit Moe Cub Ida Nan Ort Dan Lex Quo Pez Hal Ren Sue Tia Uma Vin Wes Xon Yul Zeb Ann Bob Edy Fly Gus Joe Kit Moe Cub Ida Nan Ort Dan Lex Pez Quo Hal Ren Sue Tia Uma Vin Wes Xon Yul Zeb

24 CS 240 142 Ann Bob Edy Fly Gus Joe Kit Moe Cub Ida Nan Ort Dan Lex Pez Hal Quo Ren Sue Tia Uma Vin Wes Xon Yul Zeb Ann Bob Edy Fly Gus Joe Kit Cub Moe Ida Nan Ort Dan Lex Pez Hal Quo Ren Sue Tia Uma Vin Wes Xon Yul Zeb Ann Bob Edy Fly Gus Joe Kit Cub Ida Moe Nan Ort Dan Lex Pez Hal Quo Ren Sue Tia Uma Vin Wes Xon Yul Zeb Ann Bob Edy Fly Gus Joe Kit Cub Ida Moe Nan Dan Ort Lex Pez Hal Quo Ren Sue Tia Uma Vin Wes Xon Yul Zeb Ann Bob Edy Fly Gus Joe Kit Cub Ida Moe Nan Dan Lex Ort Pez Hal Quo Ren Sue Tia Uma Vin Wes Xon Yul Zeb Ann Bob Edy Fly Gus Joe Kit Cub Ida Moe Nan Dan Lex Ort Hal Pez Quo Ren Sue Tia Uma Vin Wes Xon Yul Zeb Ann Bob Edy Fly Gus Joe Cub Kit Ida Moe Nan Dan Lex Ort Hal Pez Quo Ren Sue Tia Uma Vin Wes Xon Yul Zeb Ann Bob Edy Fly Gus Joe Cub Ida Kit Moe Nan Dan Lex Ort Hal Pez Quo Ren Sue Tia Uma Vin Wes Xon Yul Zeb Ann Bob Edy Fly Gus Joe Cub Ida Kit Moe Dan Nan Lex Ort Hal Pez Quo Ren Sue Tia Uma Vin Wes Xon Yul Zeb Ann Bob Edy Fly Gus Joe Cub Ida Kit Moe Dan Lex Nan Ort Hal Pez Quo Ren Sue Tia Uma Vin Wes Xon Yul Zeb Ann Bob Edy Fly Gus Joe Cub Ida Kit Moe Dan Lex Nan Hal Ort Pez Quo Ren Sue Tia Uma Vin Wes Xon Yul Zeb Ann Bob Edy Fly Gus Cub Joe Ida Kit Moe Dan Lex Nan Hal Ort Pez Quo Ren Sue Tia Uma Vin Wes Xon Yul Zeb

25 CS 240 143 Ann Bob Edy Fly Gus Cub Ida Joe Kit Moe Dan Lex Nan Hal Ort Pez Quo Ren Sue Tia Uma Vin Wes Xon Yul Zeb Ann Bob Edy Fly Gus Cub Ida Joe Kit Dan Moe Lex Nan Hal Ort Pez Quo Ren Sue Tia Uma Vin Wes Xon Yul Zeb Ann Bob Edy Fly Gus Cub Ida Joe Kit Dan Lex Moe Nan Hal Ort Pez Quo Ren Sue Tia Uma Vin Wes Xon Yul Zeb Ann Bob Edy Fly Gus Cub Ida Joe Kit Dan Lex Moe Hal Nan Ort Pez Quo Ren Sue Tia Uma Vin Wes Xon Yul Zeb Ann Bob Edy Fly Cub Gus Ida Joe Kit Dan Lex Moe Hal Nan Ort Pez Quo Ren Sue Tia Uma Vin Wes Xon Yul Zeb Ann Bob Edy Fly Cub Gus Ida Joe Dan Kit Lex Moe Hal Nan Ort Pez Quo Ren Sue Tia Uma Vin Wes Xon Yul Zeb Ann Bob Edy Fly Cub Gus Ida Joe Dan Kit Lex Hal Moe Nan Ort Pez Quo Ren Sue Tia Uma Vin Wes Xon Yul Zeb Ann Bob Edy Cub Fly Gus Ida Joe Dan Kit Lex Hal Moe Nan Ort Pez Quo Ren Sue Tia Uma Vin Wes Xon Yul Zeb Ann Bob Edy Cub Fly Gus Ida Dan Joe Kit Lex Hal Moe Nan Ort Pez Quo Ren Sue Tia Uma Vin Wes Xon Yul Zeb Ann Bob Edy Cub Fly Gus Ida Dan Joe Kit Hal Lex Moe Nan Ort Pez Quo Ren Sue Tia Uma Vin Wes Xon Yul Zeb Ann Bob Cub Edy Fly Gus Ida Dan Joe Kit Hal Lex Moe Nan Ort Pez Quo Ren Sue Tia Uma Vin Wes Xon Yul Zeb

26 CS 240 144 Ann Bob Cub Edy Fly Gus Dan Ida Joe Kit Hal Lex Moe Nan Ort Pez Quo Ren Sue Tia Uma Vin Wes Xon Yul Zeb Ann Bob Cub Edy Fly Gus Dan Ida Joe Hal Kit Lex Moe Nan Ort Pez Quo Ren Sue Tia Uma Vin Wes Xon Yul Zeb Ann Bob Cub Edy Fly Dan Gus Ida Joe Hal Kit Lex Moe Nan Ort Pez Quo Ren Sue Tia Uma Vin Wes Xon Yul Zeb Ann Bob Cub Edy Fly Dan Gus Ida Hal Joe Kit Lex Moe Nan Ort Pez Quo Ren Sue Tia Uma Vin Wes Xon Yul Zeb Ann Bob Cub Edy Dan Fly Gus Ida Hal Joe Kit Lex Moe Nan Ort Pez Quo Ren Sue Tia Uma Vin Wes Xon Yul Zeb Ann Bob Cub Edy Dan Fly Gus Hal Ida Joe Kit Lex Moe Nan Ort Pez Quo Ren Sue Tia Uma Vin Wes Xon Yul Zeb Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Nan Ort Pez Quo Ren Sue Tia Uma Vin Wes Xon Yul Zeb

27 CS 240 145 How long does it take the bubble sort to execute? Let’s examine the worst case (i.e., for every iteration of the while loop, every iteration of the for loop results in a swap): void sort(list L, int n) { int j, k = 0; int j, k = 0; bool exchange_made = true; bool exchange_made = true; elt temp; elt temp; while ((k < n-1) && exchange_made) while ((k < n-1) && exchange_made) { exchange_made = false; exchange_made = false; ++k; ++k; for (j = 0; j < n-k; ++j) for (j = 0; j < n-k; ++j) { if (L[j] > L[j+1]) if (L[j] > L[j+1]) { temp = L[j]; temp = L[j]; L[j] = L[j+1]; L[j] = L[j+1]; L[j+1] = temp; L[j+1] = temp; exchange_made = true; exchange_made = true; } } }}} These two steps (both assignments) would be executed exactly once. There would be at most n-1 iterations of the while loop, and calculating the boolean condition takes three steps. } These two steps (one assignments, one increment) would be executed once for each iteration of the while loop. There would be n-k iterations of the for loop for the kth iteration of the while loop, and processing each for-loop iteration takes three steps. } These 24 steps (one comparison, nine additions, six multiplications, eight assignments/memory accesses) would be executed once for each iteration of the for loop. Bubble Sort Analysis

28 CS 240 146 Selection Sort void sort(list L, int n) { int j, k; int j, k; int index; int index; elt temp; elt temp; // Make n - 1 passes through // Make n - 1 passes through // successively smaller segments // successively smaller segments for (j = 0; j < n - 1; ++j) for (j = 0; j < n - 1; ++j) { index = j; index = j; for (k = j+1; k < n; ++k)// Find index of smallest element for (k = j+1; k < n; ++k)// Find index of smallest element { if (L[k] < L[index]) if (L[k] < L[index]) index = k; index = k; } if (index != j) if (index != j) { temp = L[index];// Exchange must be made temp = L[index];// Exchange must be made L[index] = L[j]; L[index] = L[j]; L[j] = temp; L[j] = temp; } }}

29 CS 240 147 Selection Sort: Step-By-Step Example Moe Edy Zeb Ort Bob Wes Ann Uma Quo Kit Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Ann Edy Zeb Ort Bob Wes Moe Uma Quo Kit Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia

30 CS 240 148 Ann Edy Zeb Ort Bob Wes Moe Uma Quo Kit Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Ann Bob Zeb Ort Edy Wes Moe Uma Quo Kit Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia

31 CS 240 149 Ann Bob Zeb Ort Edy Wes Moe Uma Quo Kit Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Ann Bob Cub Ort Edy Wes Moe Uma Quo Kit Fly Vin Xon Gus Joe Nan Sue Zeb Ida Yul Ren Dan Lex Pez Hal Tia Ann Bob Cub Dan Edy Wes Moe Uma Quo Kit Fly Vin Xon Gus Joe Nan Sue Zeb Ida Yul Ren Ort Lex Pez Hal Tia

32 CS 240 150 Ann Bob Cub Dan Edy Wes Moe Uma Quo Kit Fly Vin Xon Gus Joe Nan Sue Zeb Ida Yul Ren Ort Lex Pez Hal Tia Ann Bob Cub Dan Edy Fly Moe Uma Quo Kit Wes Vin Xon Gus Joe Nan Sue Zeb Ida Yul Ren Ort Lex Pez Hal Tia

33 CS 240 151 Ann Bob Cub Dan Edy Fly Moe Uma Quo Kit Wes Vin Xon Gus Joe Nan Sue Zeb Ida Yul Ren Ort Lex Pez Hal Tia Ann Bob Cub Dan Edy Fly Gus Uma Quo Kit Wes Vin Xon Moe Joe Nan Sue Zeb Ida Yul Ren Ort Lex Pez Hal Tia Ann Bob Cub Dan Edy Fly Gus Hal Quo Kit Wes Vin Xon Moe Joe Nan Sue Zeb Ida Yul Ren Ort Lex Pez Uma Tia

34 CS 240 152 Ann Bob Cub Dan Edy Fly Gus Hal Quo Kit Wes Vin Xon Moe Joe Nan Sue Zeb Ida Yul Ren Ort Lex Pez Uma Tia Ann Bob Cub Dan Edy Fly Gus Hal Ida Kit Wes Vin Xon Moe Joe Nan Sue Zeb Quo Yul Ren Ort Lex Pez Uma Tia Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Wes Vin Xon Moe Kit Nan Sue Zeb Quo Yul Ren Ort Lex Pez Uma Tia

35 CS 240 153 Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Wes Vin Xon Moe Kit Nan Sue Zeb Quo Yul Ren Ort Lex Pez Uma Tia Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Vin Xon Moe Wes Nan Sue Zeb Quo Yul Ren Ort Lex Pez Uma Tia Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Xon Moe Wes Nan Sue Zeb Quo Yul Ren Ort Vin Pez Uma Tia Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Xon Wes Nan Sue Zeb Quo Yul Ren Ort Vin Pez Uma Tia

36 CS 240 154 Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Xon Wes Nan Sue Zeb Quo Yul Ren Ort Vin Pez Uma Tia Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Nan Wes Xon Sue Zeb Quo Yul Ren Ort Vin Pez Uma Tia Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Nan Ort Xon Sue Zeb Quo Yul Ren Wes Vin Pez Uma Tia Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Nan Ort Pez Sue Zeb Quo Yul Ren Wes Vin Xon Uma Tia

37 CS 240 155 Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Nan Ort Pez Quo Zeb Sue Yul Ren Wes Vin Xon Uma Tia Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Nan Ort Pez Quo Ren Sue Yul Zeb Wes Vin Xon Uma Tia Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Nan Ort Pez Quo Ren Sue Tia Zeb Wes Vin Xon Uma Yul Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Nan Ort Pez Quo Ren Sue Tia Uma Wes Vin Xon Zeb Yul Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Nan Ort Pez Quo Ren Sue Tia Uma Vin Wes Xon Zeb Yul

38 CS 240 156 Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Nan Ort Pez Quo Ren Sue Tia Uma Vin Wes Xon Zeb Yul Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Nan Ort Pez Quo Ren Sue Tia Uma Vin Wes Xon Yul Zeb For the worst case of selection sort (i.e., every condition is true for every if statement in the function): Selection Sort Analysis void sort(list L, int n) { int j, k; int j, k; int index; int index; elt temp; elt temp; for (j = 0; j < n - 1; ++j) for (j = 0; j < n - 1; ++j) { index = j; index = j; for (k = j+1; k < n; ++k) for (k = j+1; k < n; ++k) { if (L[k] < L[index]) if (L[k] < L[index]) index = k; index = k; } if (index != j) if (index != j) { temp = L[index]; temp = L[index]; L[index] = L[j]; L[index] = L[j]; L[j] = temp; L[j] = temp; } }} This step would be executed once for each iteration of the outer for loop. There would be n-1 iterations of the outer for loop, and processing each for-loop iteration takes three steps. } These eight steps would be executed once for each iteration of the inner for loop. There would be n-j-1 iterations of the inner for loop for the jth iteration of the outer for loop, and processing each for-loop iteration takes two steps (with one extra step for the first iteration). } These 14 steps would be executed once for each iteration of the outer for loop.

39 CS 240 157 Insertion Sort void sort(list L, int n) { int j, k; int j, k; elt itemToInsert; elt itemToInsert; bool stillLooking; bool stillLooking; // On the kth pass, insert item k // On the kth pass, insert item k // into its correct position among // into its correct position among // the first k entries in array. // the first k entries in array. for (k = 1; k < n; k++) for (k = 1; k < n; k++) { // Walk backwards through the // Walk backwards through the // list, seeking the slot to // list, seeking the slot to // insert the kth element. // insert the kth element. itemToInsert = L[k]; itemToInsert = L[k]; j = k-1; j = k-1; stillLooking = true; stillLooking = true; while ((j >= 0) && stillLooking ) while ((j >= 0) && stillLooking ) if (itemToInsert < L[j]) if (itemToInsert < L[j]) { L[j+1] = L[j]; L[j+1] = L[j]; j--; j--; } else else stillLooking = false; stillLooking = false; // Upon leaving loop, j+1 is the index // Upon leaving loop, j+1 is the index // where itemToInsert belongs // where itemToInsert belongs L[j+1] = itemToInsert; L[j+1] = itemToInsert; }}

40 CS 240 158 Insertion Sort: Step-By-Step Example Moe Edy Zeb Ort Bob Wes Ann Uma Quo Kit Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Edy Moe Zeb Ort Bob Wes Ann Uma Quo Kit Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Edy Moe Ort Zeb Bob Wes Ann Uma Quo Kit Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Bob Edy Moe Ort Zeb Wes Ann Uma Quo Kit Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Bob Edy Moe Ort Wes Zeb Ann Uma Quo Kit Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Ann Bob Edy Moe Ort Wes Zeb Uma Quo Kit Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Ann Bob Edy Moe Ort Wes Wes Zeb Quo Kit Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Ann Bob Edy Moe Ort Uma Wes Zeb Quo Kit Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Ann Bob Edy Moe Ort Quo Uma Wes Zeb Kit Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia

41 CS 240 159 Ann Bob Edy Moe Ort Quo Uma Wes Zeb Kit Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Ann Bob Edy Kit Moe Ort Quo Uma Wes Zeb Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Ann Bob Edy Fly Kit Moe Ort Quo Uma Wes Zeb Vin Xon Gus Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Ann Bob Edy Fly Kit Moe Ort Quo Uma Wes Wes Zeb Xon Gus Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Ann Bob Edy Fly Kit Moe Ort Quo Uma Vin Wes Zeb Xon Gus Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Ann Bob Edy Fly Kit Moe Ort Quo Uma Vin Wes Xon Zeb Gus Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Ann Bob Edy Fly Gus Kit Moe Ort Quo Uma Vin Wes Xon Zeb Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Ann Bob Edy Fly Gus Joe Kit Moe Ort Quo Uma Vin Wes Xon Zeb Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Ann Bob Edy Fly Gus Joe Kit Moe Nan Ort Quo Uma Vin Wes Xon Zeb Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Ann Bob Edy Fly Gus Joe Kit Moe Nan Ort Quo Sue Uma Vin Wes Xon Zeb Cub Ida Yul Ren Dan Lex Pez Hal Tia Ann Bob Cub Edy Fly Gus Joe Kit Moe Nan Ort Quo Sue Uma Vin Wes Xon Zeb Ida Yul Ren Dan Lex Pez Hal Tia Ann Bob Cub Edy Fly Gus Ida Joe Kit Moe Nan Ort Quo Sue Uma Vin Wes Xon Zeb Yul Ren Dan Lex Pez Hal Tia

42 CS 240 160 Ann Bob Cub Edy Fly Gus Ida Joe Kit Moe Nan Ort Quo Sue Uma Vin Wes Xon Zeb Yul Ren Dan Lex Pez Hal Tia Ann Bob Cub Edy Fly Gus Ida Joe Kit Moe Nan Ort Quo Sue Uma Vin Wes Xon Yul Zeb Ren Dan Lex Pez Hal Tia Ann Bob Cub Edy Fly Gus Ida Joe Kit Moe Nan Ort Quo Ren Sue Uma Vin Wes Xon Yul Zeb Dan Lex Pez Hal Tia Ann Bob Cub Dan Edy Fly Gus Ida Joe Kit Moe Nan Ort Quo Ren Sue Uma Vin Wes Xon Yul Zeb Lex Pez Hal Tia Ann Bob Cub Dan Edy Fly Gus Ida Joe Kit Lex Moe Nan Ort Quo Ren Sue Uma Vin Wes Xon Yul Zeb Pez Hal Tia Ann Bob Cub Dan Edy Fly Gus Ida Joe Kit Lex Moe Nan Ort Pez Quo Ren Sue Uma Vin Wes Xon Yul Zeb Hal Tia Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Nan Ort Pez Quo Ren Sue Uma Vin Wes Xon Yul Zeb Tia Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Nan Ort Pez Quo Ren Sue Tia Uma Vin Wes Xon Yul Zeb

43 CS 240 161 For the worst case of insertion sort (i.e., every time the while is entered, it must examine all of the array that’s been sorted thus far): Insertion Sort Analysis void sort(list L, int n) { int j, k; int j, k; elt itemToInsert; elt itemToInsert; bool stillLooking; bool stillLooking; for (k = 1; k < n; k++) for (k = 1; k < n; k++) { itemToInsert = L[k]; itemToInsert = L[k]; j = k-1; j = k-1; stillLooking = true; stillLooking = true; while ((j >= 0) && stillLooking ) while ((j >= 0) && stillLooking ) if (itemToInsert < L[j]) if (itemToInsert < L[j]) { L[j+1] = L[j]; L[j+1] = L[j]; j--; j--; } else else stillLooking = false; stillLooking = false; L[j+1] = itemToInsert; L[j+1] = itemToInsert; }} These four steps would be executed once for each iteration of the for loop. There would be n-1 iterations of the for loop, and processing each for-loop iteration takes two steps. There would be k iterations of the while loop for the kth iteration of the for loop, and processing each while-loop iteration takes two steps. The twelve steps associated with the if would be executed once for each iteration of the while loop. These seven steps would be executed once for each iteration of the for loop.

44 CS 240 162 Shell Sort void segmentedInsertionSort(list L, int n, int k); void sort(list L, int n) { int k = n/2; int k = n/2; while (k > 0) while (k > 0) { segmentedInsertionSort(L, n, k); segmentedInsertionSort(L, n, k); k /= 2; k /= 2; }} void segmentedInsertionSort(list L, int n, int k) { int i, j, t; int i, j, t; elt itemToInsert; elt itemToInsert; bool stillLooking; bool stillLooking; for (i = 0; i < k; i++) for (i = 0; i < k; i++) for (j = i + k; j < n; j += k) for (j = i + k; j < n; j += k) { itemToInsert = L[j]; itemToInsert = L[j]; t = j - k; t = j - k; stillLooking = true; stillLooking = true; while ((t >= i) && stillLooking) while ((t >= i) && stillLooking) if (itemToInsert < L[t]) if (itemToInsert < L[t]) { L[t + k] = L[t]; L[t + k] = L[t]; t -= k; t -= k; } else else stillLooking = false; stillLooking = false; L[t + k] = itemToInsert; L[t + k] = itemToInsert; }} The worst case for Insertion Sort involves examining all of the array that’s been sorted thus far. The Shell Sort algorithm alleviates this problem by sorting periodic subarrays, making it unlikely that complete linear traversals of the list will be needed.

45 CS 240 163 Shell Sort: Step-By-Step Example Moe Edy Zeb Ort Bob Wes Ann Uma Quo Kit Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Gus Edy Zeb Ort Bob Wes Ann Uma Quo Kit Fly Vin Xon Moe Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Gus Edy Nan Ort Bob Wes Ann Uma Quo Kit Fly Vin Xon Moe Joe Zeb Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Gus Edy Nan Ort Bob Ida Ann Uma Quo Kit Fly Vin Xon Moe Joe Zeb Sue Cub Wes Yul Ren Dan Lex Pez Hal Tia Gus Edy Nan Ort Bob Ida Ann Ren Quo Kit Fly Vin Xon Moe Joe Zeb Sue Cub Wes Yul Uma Dan Lex Pez Hal Tia Gus Edy Nan Ort Bob Ida Ann Ren Dan Kit Fly Vin Xon Moe Joe Zeb Sue Cub Wes Yul Uma Quo Lex Pez Hal Tia Gus Edy Nan Ort Bob Ida Ann Ren Dan Kit Fly Hal Xon Moe Joe Zeb Sue Cub Wes Yul Uma Quo Lex Pez Vin Tia Gus Edy Nan Ort Bob Ida Ann Ren Dan Kit Fly Hal Tia Moe Joe Zeb Sue Cub Wes Yul Uma Quo Lex Pez Vin Xon

46 CS 240 164 Gus Edy Nan Ort Bob Ida Ann Ren Dan Kit Fly Hal Tia Moe Joe Zeb Sue Cub Wes Yul Uma Quo Lex Pez Vin Xon Ann Edy Nan Ort Bob Ida Gus Ren Dan Kit Fly Hal Tia Moe Joe Zeb Sue Cub Wes Yul Uma Quo Lex Pez Vin Xon Ann Edy Nan Ort Bob Ida Gus Ren Dan Kit Fly Hal Tia Moe Joe Zeb Sue Cub Vin Yul Uma Quo Lex Pez Wes Xon Ann Edy Nan Ort Bob Ida Gus Moe Dan Kit Fly Hal Tia Ren Joe Zeb Sue Cub Vin Yul Uma Quo Lex Pez Wes Xon Ann Edy Nan Ort Bob Ida Gus Moe Dan Kit Fly Hal Tia Ren Joe Zeb Sue Cub Vin Xon Uma Quo Lex Pez Wes Yul Ann Edy Dan Ort Bob Ida Gus Moe Nan Kit Fly Hal Tia Ren Joe Zeb Sue Cub Vin Xon Uma Quo Lex Pez Wes Yul Ann Edy Dan Ort Bob Ida Gus Moe Joe Kit Fly Hal Tia Ren Nan Zeb Sue Cub Vin Xon Uma Quo Lex Pez Wes Yul Ann Edy Dan Kit Bob Ida Gus Moe Joe Ort Fly Hal Tia Ren Nan Zeb Sue Cub Vin Xon Uma Quo Lex Pez Wes Yul Ann Edy Dan Kit Bob Ida Gus Moe Joe Ort Fly Hal Tia Ren Nan Quo Sue Cub Vin Xon Uma Zeb Lex Pez Wes Yul Ann Edy Dan Kit Bob Ida Gus Moe Joe Ort Fly Hal Tia Ren Nan Quo Lex Cub Vin Xon Uma Zeb Sue Pez Wes Yul Ann Edy Dan Kit Bob Hal Gus Moe Joe Ort Fly Ida Tia Ren Nan Quo Lex Cub Vin Xon Uma Zeb Sue Pez Wes Yul Ann Edy Dan Kit Bob Cub Gus Moe Joe Ort Fly Hal Tia Ren Nan Quo Lex Ida Vin Xon Uma Zeb Sue Pez Wes Yul

47 CS 240 165 Ann Edy Dan Kit Bob Cub Gus Moe Joe Ort Fly Hal Tia Ren Nan Quo Lex Ida Vin Xon Uma Zeb Sue Pez Wes Yul Ann Edy Dan Kit Bob Cub Gus Moe Joe Ort Fly Hal Tia Ren Nan Quo Lex Ida Vin Xon Uma Zeb Sue Pez Wes Yul Ann Edy Dan Gus Bob Cub Kit Moe Joe Ort Fly Hal Tia Ren Nan Quo Lex Ida Vin Xon Uma Zeb Sue Pez Wes Yul Ann Edy Dan Gus Bob Cub Kit Moe Joe Ort Fly Hal Tia Ren Nan Quo Lex Ida Vin Xon Uma Zeb Sue Pez Wes Yul Ann Edy Dan Gus Bob Cub Kit Moe Joe Ort Fly Hal Quo Ren Nan Tia Lex Ida Vin Xon Uma Zeb Sue Pez Wes Yul Ann Edy Dan Gus Bob Cub Kit Moe Joe Ort Fly Hal Quo Ren Nan Tia Lex Ida Vin Xon Uma Wes Sue Pez Zeb Yul Ann Bob Dan Gus Edy Cub Kit Moe Joe Ort Fly Hal Quo Ren Nan Tia Lex Ida Vin Xon Uma Wes Sue Pez Zeb Yul Ann Bob Dan Gus Edy Cub Kit Fly Joe Ort Moe Hal Quo Ren Nan Tia Lex Ida Vin Xon Uma Wes Sue Pez Zeb Yul Ann Bob Dan Gus Edy Cub Kit Fly Joe Ort Lex Hal Quo Moe Nan Tia Ren Ida Vin Xon Uma Wes Sue Pez Zeb Yul Ann Bob Dan Gus Edy Cub Kit Fly Joe Ort Lex Hal Quo Moe Nan Tia Ren Ida Vin Sue Uma Wes Xon Pez Zeb Yul Ann Bob Cub Gus Edy Dan Kit Fly Joe Ort Lex Hal Quo Moe Nan Tia Ren Ida Vin Sue Uma Wes Xon Pez Zeb Yul Ann Bob Cub Gus Edy Dan Kit Fly Hal Ort Lex Joe Quo Moe Nan Tia Ren Ida Vin Sue Uma Wes Xon Pez Zeb Yul Ann Bob Cub Gus Edy Dan Kit Fly Hal Ort Lex Ida Quo Moe Joe Tia Ren Nan Vin Sue Uma Wes Xon Pez Zeb Yul Ann Bob Cub Gus Edy Dan Kit Fly Hal Ort Lex Ida Quo Moe Joe Tia Ren Nan Vin Sue Pez Wes Xon Uma Zeb Yul

48 CS 240 166 Ann Bob Cub Gus Edy Dan Kit Fly Hal Ort Lex Ida Quo Moe Joe Tia Ren Nan Vin Sue Pez Wes Xon Uma Zeb Yul Ann Bob Cub Edy Gus Dan Kit Fly Hal Ort Lex Ida Quo Moe Joe Tia Ren Nan Vin Sue Pez Wes Xon Uma Zeb Yul Ann Bob Cub Dan Edy Gus Kit Fly Hal Ort Lex Ida Quo Moe Joe Tia Ren Nan Vin Sue Pez Wes Xon Uma Zeb Yul Ann Bob Cub Dan Edy Fly Gus Kit Hal Ort Lex Ida Quo Moe Joe Tia Ren Nan Vin Sue Pez Wes Xon Uma Zeb Yul Ann Bob Cub Dan Edy Fly Gus Hal Kit Ort Lex Ida Quo Moe Joe Tia Ren Nan Vin Sue Pez Wes Xon Uma Zeb Yul Ann Bob Cub Dan Edy Fly Gus Hal Kit Lex Ort Ida Quo Moe Joe Tia Ren Nan Vin Sue Pez Wes Xon Uma Zeb Yul Ann Bob Cub Dan Edy Fly Gus Hal Ida Kit Lex Ort Quo Moe Joe Tia Ren Nan Vin Sue Pez Wes Xon Uma Zeb Yul Ann Bob Cub Dan Edy Fly Gus Hal Ida Kit Lex Moe Ort Quo Joe Tia Ren Nan Vin Sue Pez Wes Xon Uma Zeb Yul Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Ort Quo Tia Ren Nan Vin Sue Pez Wes Xon Uma Zeb Yul Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Ort Quo Ren Tia Nan Vin Sue Pez Wes Xon Uma Zeb Yul Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Nan Ort Quo Ren Tia Vin Sue Pez Wes Xon Uma Zeb Yul Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Nan Ort Quo Ren Sue Tia Vin Pez Wes Xon Uma Zeb Yul Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Nan Ort Pez Quo Ren Sue Tia Vin Wes Xon Uma Zeb Yul Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Nan Ort Pez Quo Ren Sue Tia Uma Vin Wes Xon Zeb Yul Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Nan Ort Pez Quo Ren Sue Tia Uma Vin Wes Xon Yul Zeb

49 CS 240 167 Shell Sort Analysis This one is a bit harder to calculate the running time for, but it turns out to be O(n 2 ). For the worst case of insertion sort (i.e., for every iteration of the while loop, every iteration of the for loop results in a swap): void sort(list L, int n) { int k = n/2; int k = n/2; while (k > 0) while (k > 0) { segmentedInsertionSort(L, n, k); segmentedInsertionSort(L, n, k); k /= 2; k /= 2; }} void segmentedInsertionSort(list L, int n, int k) { int i, j, t; int i, j, t; elt itemToInsert; elt itemToInsert; bool stillLooking; bool stillLooking; for (i = 0; i < k; i++) for (i = 0; i < k; i++) for (j = i + k; j < n; j += k) for (j = i + k; j < n; j += k) { itemToInsert = L[j]; itemToInsert = L[j]; t = j - k; t = j - k; stillLooking = true; stillLooking = true; while ((t >= i) && stillLooking) while ((t >= i) && stillLooking) if (itemToInsert < L[t]) if (itemToInsert < L[t]) { L[t + k] = L[t]; L[t + k] = L[t]; t -= k; t -= k; } else else stillLooking = false; stillLooking = false; L[t + k] = itemToInsert; L[t + k] = itemToInsert; }} 2 steps before the loop; logn iterations; 2+T sis (n,k) steps for each iteration There would be k iterations of the outer for loop, and processing each for-loop iteration would take two steps. There would be n/k-1 iterations of the inner for loop, and processing each for-loop iteration would take three steps. These seven steps would be executed once for each iteration of the inner for loop. There would be (j-i)/k iterations of the while loop for each iteration of the inner for loop, and processing each while-loop iteration would take two steps. These 13 steps would be executed once for each iteration of the while loop. These four steps would be executed once for each iteration of the inner for loop.

50 CS 240 168 Quick Sort void quickSort(list L, int lower, int lower, int upper); int upper); void partition(list L, int lo, int lo, int hi, int hi, int &pivotPoint); int &pivotPoint); void sort(list L, int n) { quickSort(L, 0, n-1); quickSort(L, 0, n-1);} void quickSort(list L, int lower, int lower, int upper) int upper){ int pivotPoint; int pivotPoint; partition(L, lower, upper, partition(L, lower, upper, pivotPoint); pivotPoint); if (lower < pivotPoint) if (lower < pivotPoint) quickSort(L, lower, quickSort(L, lower, pivotPoint - 1); pivotPoint - 1); if (upper > pivotPoint) if (upper > pivotPoint) quickSort(L, pivotPoint + 1, quickSort(L, pivotPoint + 1, upper); upper);} void partition(list L, int lo, int lo, int hi, int hi, int &pivotPoint) int &pivotPoint){ elt pivot = L[lo]; elt pivot = L[lo]; while (lo < hi) while (lo < hi) { while ((pivot < L[hi]) while ((pivot < L[hi]) && (lo < hi)) && (lo < hi)) hi--; hi--; if (hi != lo) if (hi != lo) { L[lo] = L[hi]; L[lo] = L[hi]; lo++; lo++; } while ((pivot > L[lo]) while ((pivot > L[lo]) && (lo < hi)) && (lo < hi)) lo++; lo++; if (hi != lo) if (hi != lo) { L[hi] = L[lo]; L[hi] = L[lo]; hi--; hi--; } } L[hi] = pivot; L[hi] = pivot; pivotPoint = hi; pivotPoint = hi;}

51 CS 240 169 Quick Sort: Step-By-Step Example Moe Edy Zeb Ort Bob Wes Ann Uma Quo Kit Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Pivot = Moe --- Edy Zeb Ort Bob Wes Ann Uma Quo Kit Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Hal Edy Zeb Ort Bob Wes Ann Uma Quo Kit Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez --- Tia Hal Edy --- Ort Bob Wes Ann Uma Quo Kit Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Zeb Tia Hal Edy Lex Ort Bob Wes Ann Uma Quo Kit Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Ren Dan --- Pez Zeb Tia Hal Edy Lex --- Bob Wes Ann Uma Quo Kit Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Ren Dan Ort Pez Zeb Tia Hal Edy Lex Dan Bob Wes Ann Uma Quo Kit Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Ren --- Ort Pez Zeb Tia Hal Edy Lex Dan Bob --- Ann Uma Quo Kit Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Ren Wes Ort Pez Zeb Tia Hal Edy Lex Dan Bob Ida Ann Uma Quo Kit Fly Vin Xon Gus Joe Nan Sue Cub --- Yul Ren Wes Ort Pez Zeb Tia Hal Edy Lex Dan Bob Ida Ann --- Quo Kit Fly Vin Xon Gus Joe Nan Sue Cub Uma Yul Ren Wes Ort Pez Zeb Tia Hal Edy Lex Dan Bob Ida Ann Cub Quo Kit Fly Vin Xon Gus Joe Nan Sue --- Uma Yul Ren Wes Ort Pez Zeb Tia Hal Edy Lex Dan Bob Ida Ann Cub --- Kit Fly Vin Xon Gus Joe Nan Sue Quo Uma Yul Ren Wes Ort Pez Zeb Tia Hal Edy Lex Dan Bob Ida Ann Cub Joe Kit Fly Vin Xon Gus --- Nan Sue Quo Uma Yul Ren Wes Ort Pez Zeb Tia

52 CS 240 170 Hal Edy Lex Dan Bob Ida Ann Cub Joe Kit Fly Vin Xon Gus --- Nan Sue Quo Uma Yul Ren Wes Ort Pez Zeb Tia Hal Edy Lex Dan Bob Ida Ann Cub Joe Kit Fly --- Xon Gus Vin Nan Sue Quo Uma Yul Ren Wes Ort Pez Zeb Tia Hal Edy Lex Dan Bob Ida Ann Cub Joe Kit Fly Gus Xon --- Vin Nan Sue Quo Uma Yul Ren Wes Ort Pez Zeb Tia Hal Edy Lex Dan Bob Ida Ann Cub Joe Kit Fly Gus --- Xon Vin Nan Sue Quo Uma Yul Ren Wes Ort Pez Zeb Tia Hal Edy Lex Dan Bob Ida Ann Cub Joe Kit Fly Gus Moe Xon Vin Nan Sue Quo Uma Yul Ren Wes Ort Pez Zeb Tia Pivot = Hal --- Edy Lex Dan Bob Ida Ann Cub Joe Kit Fly Gus Moe Xon Vin Nan Sue Quo Uma Yul Ren Wes Ort Pez Zeb Tia Gus Edy Lex Dan Bob Ida Ann Cub Joe Kit Fly --- Moe Xon Vin Nan Sue Quo Uma Yul Ren Wes Ort Pez Zeb Tia Gus Edy --- Dan Bob Ida Ann Cub Joe Kit Fly Lex Moe Xon Vin Nan Sue Quo Uma Yul Ren Wes Ort Pez Zeb Tia Gus Edy Fly Dan Bob Ida Ann Cub Joe Kit --- Lex Moe Xon Vin Nan Sue Quo Uma Yul Ren Wes Ort Pez Zeb Tia Gus Edy Fly Dan Bob --- Ann Cub Joe Kit Ida Lex Moe Xon Vin Nan Sue Quo Uma Yul Ren Wes Ort Pez Zeb Tia Gus Edy Fly Dan Bob Cub Ann --- Joe Kit Ida Lex Moe Xon Vin Nan Sue Quo Uma Yul Ren Wes Ort Pez Zeb Tia Gus Edy Fly Dan Bob Cub Ann Hal Joe Kit Ida Lex Moe Xon Vin Nan Sue Quo Uma Yul Ren Wes Ort Pez Zeb Tia Pivot = Gus --- Edy Fly Dan Bob Cub Ann Hal Joe Kit Ida Lex Moe Xon Vin Nan Sue Quo Uma Yul Ren Wes Ort Pez Zeb Tia Ann Edy Fly Dan Bob Cub --- Hal Joe Kit Ida Lex Moe Xon Vin Nan Sue Quo Uma Yul Ren Wes Ort Pez Zeb Tia Ann Edy Fly Dan Bob Cub Gus Hal Joe Kit Ida Lex Moe Xon Vin Nan Sue Quo Uma Yul Ren Wes Ort Pez Zeb Tia Pivot = Ann --- Edy Fly Dan Bob Cub Gus Hal Joe Kit Ida Lex Moe Xon Vin Nan Sue Quo Uma Yul Ren Wes Ort Pez Zeb Tia

53 CS 240 171 --- Edy Fly Dan Bob Cub Gus Hal Joe Kit Ida Lex Moe Xon Vin Nan Sue Quo Uma Yul Ren Wes Ort Pez Zeb Tia Ann Edy Fly Dan Bob Cub Gus Hal Joe Kit Ida Lex Moe Xon Vin Nan Sue Quo Uma Yul Ren Wes Ort Pez Zeb Tia Pivot = Edy Ann --- Fly Dan Bob Cub Gus Hal Joe Kit Ida Lex Moe Xon Vin Nan Sue Quo Uma Yul Ren Wes Ort Pez Zeb Tia Ann Cub Fly Dan Bob --- Gus Hal Joe Kit Ida Lex Moe Xon Vin Nan Sue Quo Uma Yul Ren Wes Ort Pez Zeb Tia Ann Cub --- Dan Bob Fly Gus Hal Joe Kit Ida Lex Moe Xon Vin Nan Sue Quo Uma Yul Ren Wes Ort Pez Zeb Tia Ann Cub Bob Dan --- Fly Gus Hal Joe Kit Ida Lex Moe Xon Vin Nan Sue Quo Uma Yul Ren Wes Ort Pez Zeb Tia Ann Cub Bob Dan Edy Fly Gus Hal Joe Kit Ida Lex Moe Xon Vin Nan Sue Quo Uma Yul Ren Wes Ort Pez Zeb Tia Pivot = Cub Ann --- Bob Dan Edy Fly Gus Hal Joe Kit Ida Lex Moe Xon Vin Nan Sue Quo Uma Yul Ren Wes Ort Pez Zeb Tia Ann Bob --- Dan Edy Fly Gus Hal Joe Kit Ida Lex Moe Xon Vin Nan Sue Quo Uma Yul Ren Wes Ort Pez Zeb Tia Ann Bob Cub Dan Edy Fly Gus Hal Joe Kit Ida Lex Moe Xon Vin Nan Sue Quo Uma Yul Ren Wes Ort Pez Zeb Tia Pivot = Bob Ann --- Cub Dan Edy Fly Gus Hal Joe Kit Ida Lex Moe Xon Vin Nan Sue Quo Uma Yul Ren Wes Ort Pez Zeb Tia Ann Bob Cub Dan Edy Fly Gus Hal Joe Kit Ida Lex Moe Xon Vin Nan Sue Quo Uma Yul Ren Wes Ort Pez Zeb Tia Pivot = Dan Ann Bob Cub --- Edy Fly Gus Hal Joe Kit Ida Lex Moe Xon Vin Nan Sue Quo Uma Yul Ren Wes Ort Pez Zeb Tia Ann Bob Cub Dan Edy Fly Gus Hal Joe Kit Ida Lex Moe Xon Vin Nan Sue Quo Uma Yul Ren Wes Ort Pez Zeb Tia Pivot = Fly Ann Bob Cub Dan Edy --- Gus Hal Joe Kit Ida Lex Moe Xon Vin Nan Sue Quo Uma Yul Ren Wes Ort Pez Zeb Tia Ann Bob Cub Dan Edy Fly Gus Hal Joe Kit Ida Lex Moe Xon Vin Nan Sue Quo Uma Yul Ren Wes Ort Pez Zeb Tia Pivot = Joe Ann Bob Cub Dan Edy Fly Gus Hal --- Kit Ida Lex Moe Xon Vin Nan Sue Quo Uma Yul Ren Wes Ort Pez Zeb Tia Ann Bob Cub Dan Edy Fly Gus Hal Ida Kit --- Lex Moe Xon Vin Nan Sue Quo Uma Yul Ren Wes Ort Pez Zeb Tia Ann Bob Cub Dan Edy Fly Gus Hal Ida --- Kit Lex Moe Xon Vin Nan Sue Quo Uma Yul Ren Wes Ort Pez Zeb Tia Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Xon Vin Nan Sue Quo Uma Yul Ren Wes Ort Pez Zeb Tia

54 CS 240 172 Pivot = Ida Ann Bob Cub Dan Edy Fly Gus Hal --- Joe Kit Lex Moe Xon Vin Nan Sue Quo Uma Yul Ren Wes Ort Pez Zeb Tia Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Xon Vin Nan Sue Quo Uma Yul Ren Wes Ort Pez Zeb Tia Pivot = Kit Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe --- Lex Moe Xon Vin Nan Sue Quo Uma Yul Ren Wes Ort Pez Zeb Tia Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Xon Vin Nan Sue Quo Uma Yul Ren Wes Ort Pez Zeb Tia Pivot = Lex Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit --- Moe Xon Vin Nan Sue Quo Uma Yul Ren Wes Ort Pez Zeb Tia Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Xon Vin Nan Sue Quo Uma Yul Ren Wes Ort Pez Zeb Tia Pivot = Xon Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe --- Vin Nan Sue Quo Uma Yul Ren Wes Ort Pez Zeb Tia Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Tia Vin Nan Sue Quo Uma Yul Ren Wes Ort Pez Zeb --- Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Tia Vin Nan Sue Quo Uma --- Ren Wes Ort Pez Zeb Yul Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Tia Vin Nan Sue Quo Uma Pez Ren Wes Ort --- Zeb Yul Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Tia Vin Nan Sue Quo Uma Pez Ren Wes Ort Xon Zeb Yul Pivot = Tia Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe --- Vin Nan Sue Quo Uma Pez Ren Wes Ort Xon Zeb Yul Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Ort Vin Nan Sue Quo Uma Pez Ren Wes --- Xon Zeb Yul Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Ort --- Nan Sue Quo Uma Pez Ren Wes Vin Xon Zeb Yul Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Ort Ren Nan Sue Quo Uma Pez --- Wes Vin Xon Zeb Yul

55 CS 240 173 Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Ort Ren Nan Sue Quo Uma Pez --- Wes Vin Xon Zeb Yul Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Ort Ren Nan Sue Quo --- Pez Uma Wes Vin Xon Zeb Yul Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Ort Ren Nan Sue Quo Pez --- Uma Wes Vin Xon Zeb Yul Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Ort Ren Nan Sue Quo Pez Tia Uma Wes Vin Xon Zeb Yul Pivot = Ort Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe --- Ren Nan Sue Quo Pez Tia Uma Wes Vin Xon Zeb Yul Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Nan Ren --- Sue Quo Pez Tia Uma Wes Vin Xon Zeb Yul Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Nan --- Ren Sue Quo Pez Tia Uma Wes Vin Xon Zeb Yul Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Nan Ort Ren Sue Quo Pez Tia Uma Wes Vin Xon Zeb Yul Pivot = Nan Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe --- Ort Ren Sue Quo Pez Tia Uma Wes Vin Xon Zeb Yul Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Nan Ort Ren Sue Quo Pez Tia Uma Wes Vin Xon Zeb Yul Pivot = Ren Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Nan Ort --- Sue Quo Pez Tia Uma Wes Vin Xon Zeb Yul Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Nan Ort Pez Sue Quo --- Tia Uma Wes Vin Xon Zeb Yul Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Nan Ort Pez --- Quo Sue Tia Uma Wes Vin Xon Zeb Yul Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Nan Ort Pez Quo --- Sue Tia Uma Wes Vin Xon Zeb Yul Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Nan Ort Pez Quo Ren Sue Tia Uma Wes Vin Xon Zeb Yul Pivot = Pez Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Nan Ort --- Quo Ren Sue Tia Uma Wes Vin Xon Zeb Yul Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Nan Ort Pez Quo Ren Sue Tia Uma Wes Vin Xon Zeb Yul Pivot = Quo Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Nan Ort Pez --- Ren Sue Tia Uma Wes Vin Xon Zeb Yul Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Nan Ort Pez Quo Ren Sue Tia Uma Wes Vin Xon Zeb Yul Pivot = Sue Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Nan Ort Pez Quo Ren --- Tia Uma Wes Vin Xon Zeb Yul Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Nan Ort Pez Quo Ren Sue Tia Uma Wes Vin Xon Zeb Yul

56 CS 240 174 Pivot = Uma Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Nan Ort Pez Quo Ren Sue Tia --- Wes Vin Xon Zeb Yul Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Nan Ort Pez Quo Ren Sue Tia Uma Wes Vin Xon Zeb Yul Pivot = Wes Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Nan Ort Pez Quo Ren Sue Tia Uma --- Vin Xon Zeb Yul Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Nan Ort Pez Quo Ren Sue Tia Uma Vin --- Xon Zeb Yul Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Nan Ort Pez Quo Ren Sue Tia Uma Vin Wes Xon Zeb Yul Pivot = Vin Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Nan Ort Pez Quo Ren Sue Tia Uma --- Wes Xon Zeb Yul Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Nan Ort Pez Quo Ren Sue Tia Uma Vin Wes Xon Zeb Yul Pivot = Zeb Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Nan Ort Pez Quo Ren Sue Tia Uma Vin Wes Xon --- Yul Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Nan Ort Pez Quo Ren Sue Tia Uma Vin Wes Xon Yul --- Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Nan Ort Pez Quo Ren Sue Tia Uma Vin Wes Xon Yul Zeb Pivot = Yul Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Nan Ort Pez Quo Ren Sue Tia Uma Vin Wes Xon --- Zeb Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Nan Ort Pez Quo Ren Sue Tia Uma Vin Wes Xon Yul Zeb For the worst case of quick sort (i.e., no pivot point reduces the problem size): Quick Sort Analysis void sort(list L, int n) { quickSort(L, 0, n-1); } void quickSort(list L, int lower, int upper) { int pivotPoint; int pivotPoint; partition(L, lower, upper, pivotPoint); partition(L, lower, upper, pivotPoint); if (lower < pivotPoint) if (lower < pivotPoint) quickSort(L, lower, pivotPoint - 1); quickSort(L, lower, pivotPoint - 1); if (upper > pivotPoint) if (upper > pivotPoint) quickSort(L, pivotPoint + 1, upper); quickSort(L, pivotPoint + 1, upper);} In the worst case, the pivot point always comes back equal to the value of lower. In the worst case, this recursive call is always executed.

57 CS 240 175 Quick Sort Analysis (continued) void partition(list L, int lo, int hi, int &pivotPoint) { elt pivot = L[lo]; elt pivot = L[lo]; while (lo < hi) while (lo < hi) { while ((pivot < L[hi]) && (lo < hi)) while ((pivot < L[hi]) && (lo < hi)) hi--; hi--; if (hi != lo) if (hi != lo) { L[lo] = L[hi]; L[lo] = L[hi]; lo++; lo++; } while ((pivot > L[lo]) && (lo L[lo]) && (lo < hi)) lo++; lo++; if (hi != lo) if (hi != lo) { L[hi] = L[lo]; L[hi] = L[lo]; hi--; hi--; } } L[hi] = pivot; L[hi] = pivot; pivotPoint = hi; pivotPoint = hi;} In the worst case, one of these loops will iterate hi-lo times. Basically, in the worst case, each value becomes the pivot point without splitting the list at all, so the i th pivot point will yield n-i comparisons, making the worst-case time complexity O(n 2 ).

58 CS 240 176 Merge Sort void order(list source, list dest, int lower, int upper); int lower, int upper); void merge(list source, list dest, int lower, int middle, int lower, int middle, int upper); int upper); void sort(list L, int n) { list Lcopy; list Lcopy; for (int k = 0; k < n; k++) for (int k = 0; k < n; k++) Lcopy[k] = L[k]; Lcopy[k] = L[k]; order(Lcopy, L, 0, n - 1); order(Lcopy, L, 0, n - 1);} void order(list source, list dest, int lower, int upper) int lower, int upper){ int middle; int middle; if (lower != upper) if (lower != upper) { middle = (lower + upper) / 2; middle = (lower + upper) / 2; order(dest, source, order(dest, source, lower, middle); lower, middle); order(dest, source, order(dest, source, middle + 1, upper); middle + 1, upper); merge(source, dest, lower, merge(source, dest, lower, middle, upper); middle, upper); }} void merge(list source, list dest, int lower, int middle, int upper) int lower, int middle, int upper){ int s1 = lower; int s1 = lower; int s2 = middle + 1; int s2 = middle + 1; int d = lower; int d = lower; do do { if (source[s1] < source[s2]) if (source[s1] < source[s2]) { dest[d] = source[s1]; dest[d] = source[s1]; s1++; s1++; } else else { dest[d] = source[s2]; dest[d] = source[s2]; s2++; s2++; } d++; d++; } while ((s1 <= middle) && (s2 <= upper)); } while ((s1 <= middle) && (s2 <= upper)); if (s1 > middle) if (s1 > middle) do do { dest[d] = source[s2]; dest[d] = source[s2]; s2++; d++; s2++; d++; } while (s2 <= upper); } while (s2 <= upper); else else do do { dest[d] = source[s1]; dest[d] = source[s1]; s1++; d++; s1++; d++; } while (s1 <= middle); } while (s1 <= middle);}

59 CS 240 177 Merge Sort: Step-By-Step Example Moe Edy Zeb Ort Bob Wes Ann Uma Quo Kit Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Edy Moe Zeb Ort Bob Wes Ann Uma Quo Kit Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Edy Moe Ort Zeb Bob Wes Ann Uma Quo Kit Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Edy Moe Ort Zeb Bob Wes Ann Quo Uma Kit Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia Edy Moe Ort Zeb Bob Wes Ann Quo Uma Kit Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Dan Ren Lex Pez Hal Tia Edy Moe Ort Zeb Bob Wes Ann Quo Uma Kit Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Dan Ren Lex Hal Pez Tia Edy Moe Ort Zeb Ann Bob Wes Quo Uma Kit Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Dan Ren Lex Hal Pez Tia Edy Moe Ort Zeb Ann Bob Wes Kit Quo Uma Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Dan Ren Lex Hal Pez Tia Edy Moe Ort Zeb Ann Bob Wes Kit Quo Uma Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Dan Lex Ren Hal Pez Tia Edy Moe Ort Zeb Ann Bob Wes Kit Quo Uma Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Dan Ren Lex Hal Pez Tia Ann Bob Edy Moe Ort Wes Zeb Kit Quo Uma Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Dan Ren Lex Hal Pez Tia Ann Bob Edy Moe Ort Wes Zeb Fly Kit Quo Uma Vin Xon Gus Joe Nan Sue Cub Ida Yul Dan Ren Lex Hal Pez Tia

60 CS 240 178 Ann Bob Edy Moe Ort Wes Zeb Fly Kit Quo Uma Vin Xon Cub Gus Ida Joe Nan Sue Yul Dan Ren Lex Hal Pez Tia Ann Bob Edy Moe Ort Wes Zeb Fly Kit Quo Uma Vin Xon Cub Gus Ida Joe Nan Sue Yul Dan Hal Lex Pez Ren Tia Ann Bob Edy Fly Kit Moe Ort Quo Uma Vin Wes Xon Zeb Cub Gus Ida Joe Nan Sue Yul Dan Hal Lex Pez Ren Tia Ann Bob Edy Fly Kit Moe Ort Quo Uma Vin Wes Xon Zeb Cub Dan Gus Hal Ida Joe Lex Nan Pez Ren Sue Tia Yul Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Nan Ort Pez Quo Ren Sue Tia Uma Vin Wes Xon Yul Zeb Merge Sort Analysis An analysis of the code indicates that the total execution time of the Merge sort will always be 8n + 1 + T order (n), where T order (n) is the amount of time it takes to execute the order function with a size-n list. An analysis of the order function indicates that its total execution time is 5 + 2*T order (n/2) + T merge (n). An analysis of the merge function indicates that its total execution time is T merge (n) = 18n + 4. This gives us a recurrence relation for the order function: T order (n) = 18n + 9 + T order (n/2), which resolves to T order (n) = 18nlogn + 10n – 9logn. Consequently, we get that the execution time for Merge Sort is 18nlogn + 18n – 9logn + 1, which is O(nlogn).

61 CS 240 179 Radix Sort #include #include const int NBR_OF_LTRS = 26; const int MAX_STRING_SIZE = 3; void sort(list L, int n) { int binNbr, itemNbr, int ltrNbr, index, i; int binNbr, itemNbr, int ltrNbr, index, i; list bin[NBR_OF_LTRS]; list bin[NBR_OF_LTRS]; int binSize[NBR_OF_LTRS]; int binSize[NBR_OF_LTRS]; // This loop controls which index is used to // This loop controls which index is used to // classify the list data for bin insertion. // classify the list data for bin insertion. for (ltrNbr = MAX_STRING_SIZE-1; ltrNbr >= 0; ltrNbr--) for (ltrNbr = MAX_STRING_SIZE-1; ltrNbr >= 0; ltrNbr--) { // Set all bins to empty. // Set all bins to empty. for (binNbr = 0; binNbr < NBR_OF_LTRS; binNbr++) for (binNbr = 0; binNbr < NBR_OF_LTRS; binNbr++) binSize[binNbr] = 0; binSize[binNbr] = 0; // Put list elements into bins, using // Put list elements into bins, using // the character at index ltrNbr. // the character at index ltrNbr. for (itemNbr = 0; itemNbr < n; ++itemNbr) for (itemNbr = 0; itemNbr < n; ++itemNbr) { index = int(toupper(L[itemNbr][ltrNbr]) - 'A'); index = int(toupper(L[itemNbr][ltrNbr]) - 'A'); bin[index][binSize[index]] = L[itemNbr]; bin[index][binSize[index]] = L[itemNbr]; binSize[index]++; binSize[index]++; } // Load bin contents back into the list. // Load bin contents back into the list. index = 0; index = 0; for (binNbr = 0; binNbr < NBR_OF_LTRS; binNbr++) for (binNbr = 0; binNbr < NBR_OF_LTRS; binNbr++) for (i = 0; i < binSize[binNbr]; i++) for (i = 0; i < binSize[binNbr]; i++) { L[index] = bin[binNbr][i]; L[index] = bin[binNbr][i]; index++; index++; } }}

62 CS 240 180 Radix Sort: Step-By-Step Example Moe Edy Zeb Ort Bob Wes Ann Uma Quo Kit Fly Vin Xon Gus Joe Nan Sue Cub Ida Yul Ren Dan Lex Pez Hal Tia In general, the time complexity of the radix sort is O(kmn), where n is the array size, k is the maximum number of digits, and m is the number of possible values for a digit. Uma Ida Tia Zeb Bob Cub Moe Joe Sue Yul Hal Ann Vin Xon Nan Ren Dan Quo Wes Gus Ort Kit Lex Edy Fly Pez Hal Nan Dan Ida Edy Zeb Ren Wes Lex Pez Tia Vin Kit Fly Uma Ann Bob Moe Joe Xon Ort Cub Sue Yul Quo Gus Ann Bob Cub Dan Edy Fly Gus Hal Ida Joe Kit Lex Moe Nan Ort Pez Quo Ren Sue Tia Uma Vin Wes Xon Yul Zeb Sort by third letter Sort by second letter Sort by first letter

63 CS 240 181 Sorting Algorithm ComparisonAlgorithmAlgorithm Worst Case Best Case Bubble Sort O(n 2 ): List in Reverse Order O(n): List in Order Selection Sort O(n 2 ): Any List Insertion Sort O(n 2 ): List in Reverse Order O(n): List in Order Shell Sort O(n 2 ): Depends on Increments O(nlogn): List in Order Quick Sort O(n 2 ): Depends on Pivots O(nlogn): Perfect Shuffle Merge Sort O(nlogn): Any List Radix Sort O(kmn): Any List


Download ppt "Chapter 9: Algorithm Efficiency and Sorting MEASURING ALGORITHM EFFICIENCY SORTING ALGORITHMS CS 240 120."

Similar presentations


Ads by Google