Slideshare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our User Agreement and Privacy Policy.

Slideshare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our Privacy Policy and User Agreement for details.

Like this presentation? Why not share!

- Lecture 2a arrays by Victor Palmar 533 views
- Lecture 2c stacks by Victor Palmar 332 views
- YourMembership.com Selects Array AP... by Array Networks 138 views
- Lecture 3 data structures & algori... by Dharmendra Prasad 1889 views
- Microsoft Summit Bucharest 2016 - O... by Fullscreen Digital 82 views
- Arrays by Trupti Agrawal 771 views

678 views

Published on

No Downloads

Total views

678

On SlideShare

0

From Embeds

0

Number of Embeds

3

Shares

0

Downloads

40

Comments

0

Likes

2

No embeds

No notes for slide

- 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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
- 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. 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. Question&Answers16

No public clipboards found for this slide

×
### Save the most important slides with Clipping

Clipping is a handy way to collect and organize the most important slides from a presentation. You can keep your great finds in clipboards organized around topics.

Be the first to comment