Lecture 2 data structures & algorithms - sorting techniques


Published on

Published in: Technology, Education
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Lecture 2 data structures & algorithms - sorting techniques

  1. 1. Description: A detailed discussion about algorithms and theirmeasures, and understanding sorting.Duration: 90 minutesStarts at: Saturday 11th May 2013, 11:00AM-by Dharmendra Prasad1
  2. 2. Table of Contents1. A detailed talk on algorithms.2. Measuring the effectiveness of an algorithm.3. Sorting Algorithms (In memory)4. Some real world sorting scenarios.2
  3. 3. Algorithm:1. A step by step procedure to solve a given problem.2. It takes an input and applies the sequence of steps to arriveon a desired output.3. Represented as a Pseudo Codes, which are English likestatements.3
  4. 4. Analysis of Algorithms:1. The theoretical study of computer program performanceand resource usage.2. Things more important than the performance and resourceusage are:1. Correctness2. Simplicity3. Features4. User friendliness5. Maintainability6. Security7. Algorithms4
  5. 5. Why study performance if other things are more important thanperformance?Performance measures the line between the feasible or in feasible: E.g. : If something takes un limited time, it is not useful to us. If it takes a lot of space which is more than available , it is infeasible. Real time constraints, need the result on time else the result is not useful.We are the decision makers when have to choose between performance and otherfactors like user experience, maintainability etc.Analyzing an algorithm means studying its performance in terms of running time,space required, etc.5
  6. 6. Sorting: The classic problemProblem definition:Input: We have a sequence <a1, a2, … , an> of numbers.Output expected: A permutation <a1’, a2; …, an’> such thata1’ <= a2’ <= a3’ … <=an’Basic definition: Take a bunch of numbers and put them in order. Ordernecessarily doesn’t mean increasing order. It can beascending/descending etc.6
  7. 7. Sorting: The classic problemPseudo Code:Insertion-Sort(A, n) // sorts A[1..n]for j <- 2 to ndo key <- A[j];i <- j-1while i > 0 and A[i] > keydo A[i+1] <- A[i]i = i -1A[i+1] = key7A->sortedJkey
  8. 8. Sorting: The classic problemExample:8 2 4 9 3 62 8 4 9 3 62 4 8 9 3 62 4 8 9 3 62 3 4 8 9 62 3 4 6 8 98
  9. 9. Analyzing the above algorithm:Running Time:• Depends on the input (e.g. if it is already sorted)• Depends on input size ( e.g. 10 elements vs. 10,000,000)If the input is already sorted, Insertion Sort has nothing much to do.( This iscalled the best case)If the input is reverse sorted, Insertion sort will shuffle in each step and takesthe maximum possible time. ( This is called the worst case)If the input is random that will be called as the average case.Time taken in the above algorithm = Sum of the work inside the outer loopT(n) =∑ f( j ) which is proportional to j²You can also say as T(n) = θ(n²)Can we say that insertion sort is fast?9
  10. 10. Merge Sort:Merge Sort A[1 .. n]Step 1: if n = 1, done;Step 2: Recursively sort A[1..(n/2)] and A[n/2 +1, n]Step 3: Merge both the sorted lists.Merge A, B10A B1 2 7 9 11 12 13 20
  11. 11. How much time merging took ?It just took n steps or we can say the work done is proportional ton , hence the time taken will be:T(n) proportional to n where n is the total number of elements inthe sorted array.T(n) = θ(n)Analyzing merge sort:Step 1: How much this step takes?Constant time, you just need to find the middle index of thearray. This means it is not dependent on the input size.Also called θ(1)Step 2: How much this step takes?Time taken in sorting A[1, n/2] + Time taken in sorting A[n/2+1,n]Lets say that each of the two steps take T[n/2] time.11
  12. 12. Step 3: The merge step took θ(n).So the total time taken by the merge sort is a sum of all thethree steps. That can be defined as below:θ (1) , if n =1T(n) =2T(n/2) + θ (n) if n > 1Hence, T(n) = 2T(n/2) + c.n, where c > 012
  13. 13. 13
  14. 14. Height of the above tree is : log nT(n) = cn (log n) + something proportional to nT(n) = cn (log n) + θ (n)Hence T(n) = θ (n log n)Comparing Insertion Sort and Merge SortInsertion sort time T(n) = θ(n²)Merge sort time T’(n) = θ (n log n)Which one do you think is more time?14
  15. 15. Real life usage of sorting algorithm:1) A cable operators personalized service.2) Alphabetical arrangement of list of items on a shoppingwebsite.3) Offering admissions to applicants with highest grades.And many more…15
  16. 16. Question&Answers16