Lecture 3 data structures & algorithms - sorting techniques - http://techieme.in

1,857 views

Published on

Published in: Education, Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,857
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
45
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Lecture 3 data structures & algorithms - sorting techniques - http://techieme.in

  1. 1. Description: A detailed discussion about algorithms and theirmeasures, and understanding sorting.Duration: 90 minutesStarts at: Saturday 12th May 2013, 11:00AM-by Dharmendra Prasad1
  2. 2. Table of Contents1. Continuing the Sorting Algorithms.1. Quick Sort (in place sorting algorithm)2. Searching Algorithms1. Binary search3. Some real world problem scenarios.1. Substring search2
  3. 3. Algorithm:It’s a divide and conquer algorithm. Step1(Divide): Partition a given array into 2 sub arrays arounda pivot ‘x’ such that the elements in lower sub array <= x <=elements in upper sub array. Step2(Conquer):Recursively sort 2 sub arrays. Step3(Combine):Do nothing as it is in place sorting.3
  4. 4. Partition(A, p, q) //A[p , q]X ← A[p]i ← pfor j ← p+1 to qdo if A[j] <= xthen i ← i+1exchange A[i] ↔ A[j]exchange A[p] ↔ A[i];return i4Ap qi j
  5. 5. 5 Example:6 10 13 5 8 3 2 11X = 6, i = 0, j = 16 5 13 10 8 3 2 116 5 3 10 8 13 2 116 5 3 2 8 13 10 11Swap pivot with i2 5 3 6 8 13 10 11
  6. 6. Algorithm:QuickSort(A, p, q)if p < qthen r <- Partition(A, p, q)QuickSort( A, p, r-1)QuickSort( A, r+1, q)Initial Call : QuickSort( A, 1, n)6
  7. 7. Order Statistics:Problem Statement: Given an array of numbers, find the kthsmallest number.Naïve Solution: Sort the array and return the element at index k.Case1: if k = 1, we are referring to the minimum number in thearray.Case2: if k = length of the array, we are referring to themaximum number in the array.Case3: when k lies between 1 and n where n is the length of thearray7
  8. 8. Algorithm:OrderStat(A,p,q,k) // means kth smallest number in A betweenindex p and qif p==qreturn A[p]r <- Partition(A,p,q)i <- r – p + 1;if k == ireturn A[r]if k < ireturn OrderStat(A,p,r-1,k)elsereturn OrderStat(A,r+1,q,k-i)8
  9. 9. Searching:Basic Idea: In an array A[a1,a2,a3,a4,…,an] find the index ksuch that p = A[k]Naïve Solution: Traverse through the array in a loop andcompare each element with the given number. If the numbermatches, return the index of the number else return null.Algorithm:Search (A[1.. n], p)for i<- 1 to ndo if A[i] == preturn ireturn null9
  10. 10. Searching:Basic Idea: In an array A[a1,a2,a3,a4,…,an] find the index k suchthat p = A[k]Binary Search Solution: Only if the array is sorted. Divide it into twohalves, check the element at the center, if it is less than what weare searching, look into the upper half else look into the lowerhalf. Repeat till you find the number or the array exhausts.Algorithm:BinarySearch (A, p, low,high)middle = (low+high)/2if A[middle] == preturn middle;else if A[middle] > preturn BinarySearch(A, p, low, middle-1)elsereturn BinarySearch(A,p,middle+1,high)10
  11. 11. Special Case Substring Searching:Basic Idea: In a character string search a substring and return the index of first occurrence.Naive Solution: Start from the first index of both the strings, compare the characters, ifcharacter matches, compare the next character and so on till the substring exhausts.Return the start index of the substring in the main string.Algorithm:SubStringSearch (S, sb)j=0;match = false;while i < S.length or j < sb.lengthif S[i] == sb[j]match = truei++, j++elsematch = falsej=0, i++if match == true and j = sb.lengthreturn i-sb.lengthelsereturn -111
  12. 12. Special Case Substring Searching:Basic Idea: In a character string search a substring and returnthe index of first occurrence.Better Solution: Boyre Moore algorithm is used to effectivelysearch substring in a given string.12
  13. 13. Question&Answers13

×