This document discusses various searching and sorting algorithms. It begins by defining searching as finding an element in a given list. Linear search and binary search are described as two common searching algorithms. Linear search has O(n) time complexity while binary search has O(log n) time complexity but requires a sorted list. The document also discusses different sorting algorithms like bubble sort, insertion sort, and merge sort, and defines key concepts related to sorting like stability, efficiency, and passes.
Introduction to searching and its importance in computer science. Techniques like linear, binary, and sentinel search are discussed.
Detailed explanation of linear search, its advantages (easy implementation, O(n) time complexity), and disadvantages (inefficiency with large lists).
An introduction to binary search, suitable for sorted lists. It discusses concepts, advantages (O(log n)), and disadvantages.
Contrasting linear and binary search regarding implementation complexity and efficiency.
Introduction to sentinel and Fibonacci search techniques, including their mechanisms and efficiencies.
Definition of sorting, importance, internal vs. external sorting algorithms, and sorting efficiency considerations. Overview of internal sorting algorithms such as Bubble, Selection, and Insertion sort, including their efficiency and usage.
Description of Quick Sort as an efficient sorting algorithm using divide-and-conquer strategy.
Explains Merge Sort's divide-and-conquer approach, its efficiency, and how it merges sorted lists.
Details of Shell Sort, interval-based sorting, and efficiency considerations.
Introduction to Bucket and Radix Sort, their methodologies, and efficiency metrics.Describes Heap Sort, its algorithm, efficiency, and worst-case performance.
Visual and conceptual comparison of various sorting methods including performance and complexity.
Pune Vidyarthi Griha’s COLLEGEOF ENGINEERING, NASHIK – 3. “ Searching & Sorting ” By Prof. Anand N. Gharu (Assistant Professor) PVGCOE Computer Dept. 10 September 2019 .
2.
Introduction Searching : “ Searchingis a techniques of finding an element in a given list of elements.” List of element could be represented using an 1. Array 2. Linked list 3. Binary tree 4. B-tree 5. Heap
3.
Why do weneed searching? Searching is one of the core computer science algorithms. We know that today’s computers store a lot of information. To retrieve this information proficiently we need very efficient searching algorithms. Types of Searching • Linear search • Binary search • Sentinel search
Linear Search Thelinear search is a sequential search, which uses a loop to step through an array, starting with the first element. It compares each element with the value being searched for, and stops when either the value is found or the end of the array is encountered. If the value being searched is not in the array, the algorithm will unsuccessfully search to the end of the array.
6.
Linear Search Sincethe array elements are stored in linear order searching the element in the linear order make it easy and efficient. The search may be successful or unsuccessfully. That is, if the required element is found them the search is successful other wise it is unsuccessfully.
7.
Advantages Linear Search easy to understand. It operates on both sorted and unsorted list It doest not require array to be in order Easy to implement Time complexity O(n)
8.
Disadvantages Linear Search Linear search is not efficient when list is large Maximum no. of comparision are N(n Element). Not suitable for large problem. You need to search whole list. Linear search is slower.
9.
Linear Search Algorithm Consideran integer type array A with size n. So list of elements from that array are, A[0], A[1], A[2], A[3],………………, A[n-1] 1. Declare and initialize one variable which contents the number to be search in an array A. ( variable key is declared) 2. Start Comparing each element from array A with the key LOOP: A[size] == key Repeat step no 2 while A[size] key 3. if key is found, display the location of element(index+1) or else display message KEY NOT FOUND 4. Terminate the program successfully
10.
Linear Search Algorithm printf(“acceptnumber to search”); scanf( key ); for( i=0 ;i<n ;i++) { if( A [ i ] == key ) { printf( key is FOUND); break; } } if( i==n ) { printf(NOT FOUND); }
11.
Analysis of LinearSearch Complexity of linear search : 1.Best Case = O(1) 2.Average Case = O(n) 3.Worst case = O(n)
12.
Binary Search “Binary searchis an searching algorithm which is used to find element from the sorted list” Concepts : - Algorithm can be applied only on sorted data - Mid = lower/upper - formula used to find mid - Given element is compared with middle element of the list. - If key=mid then element is found - Otherwise list divide into two part.(key <mid) (>mid) - First to mid-1 or mid+1 to last.
13.
Binary Search Concepts : -If given element is less than middle element then continue searching in first part (first+mid-1) otherwise searching is second part(mid+1 to last). - Repeat above step still element is found.
14.
Binary Search Assume thattwo variables are declared, variable first and last, they denotes beginning and ending indices of the list under consideration respectively. Step 1. Algorithm compares key with middle element from list ( A[middle] == key ), if true go to step 4 or else go to next. Step 2. if key < A[ middle ], search in left half of the list or else go to step 3 Step 3. if key > A[ middle ], search in right half of the list or go to step 1 Step 4. display the position of key else display message “NOT FOUND”
15.
Binary Search algorithm inti, first=0, last=n-1, middle; while( last>=first ) { middle = (first + last)/2; if( key > A[middle] ) { first = middle + 1; } else if ( key < A[middle] ) { last= middle – 1; } else { printf( FOUND ) } } if( last < first ) { printf( NOT FOUND ); }
16.
Advatages Binary Search 1.Binarysearch is optimal searching algorithms 2.Excellent time efficiency 3.Suitable for large list. 4.Faster because no need to check all element. 5.Most suitable for sorted array 6.It can be search quickly 7.Time complexity O(log n)
17.
Disadvatages Binary Search 1.Elementmust be sorted 2.Need to find mid element 3.Bit more complicated to implement and test 4.It does not support random access. 5.Key element require to compare with middle.
18.
• Element issearched by scanning the entire list from first element to the last • Many times entire list is search • Simple to implementation • Time complexity is O(n) • Less efficient sort • First list is divided into two sub-lists. Then middle element is compared with key element and then accordingly left or right sub-list is searched • Only sub-list is search • Complex to implement, since it involves computation for finding the middle element • Time complexity is O(log2 n) • More efficient sort Linear Search Vs Binary Search
This additionalentry at the end of the list is called as Sentinel. The speed of sequential search can be improved by storing the key being searched at end of the array. This will eliminate extra comparision inside the loop for number od element in the array. 30 Sentinel search
31.
Fibonacci searchtechnique is a method of searching a sorted array using a divide and conquer algorithm that narrows down possible locations with the aid of Fibonacci numbers. Compared to binary search where the sorted array is divided into two equal-sized parts, one of which is examined further, Fibonacci search divides the array into two parts that have sizes that are consecutive Fibonacci numbers. 31 Fibonacci search
32.
Fibonacci searchchanges the binary search algorithm slightly Instead of halving the index for a search, a Fibonacci number is subtracted from it The Fibonacci number to be subtracted decreases as the size of the listdecreases Note that Fibonacci search sorts a list in a non decreasing order Fibonacci search starts searching the target by comparing it with the element at Fkth location 32 Fibonacci search
Algorithm Given a tableof records R1, R2, …, RN whose keys are in increasing order K1 < K2 < … < KN, the algorithm searches for a given argument K. Assume N+1 = Fk+1 Step 1. [Initialize] i ← Fk, p ← Fk-1, q ← Fk-2 (throughout the algorithm, p and q will be consecutive Fibonacci numbers) Step 2. [Compare] If K < Ki, go to Step 3; if K > Ki go to Step 4; and if K = Ki, the algorithm terminates successfully. Step 3. [Decrease i] If q=0, the algorithm terminates unsuccessfully. Otherwise set (i, p, q) ← (p, q, p - q) (which moves p and q one position back in the Fibonacci sequence); then return to Step 2 Step 4. [Increase i] If p=1, the algorithm terminates unsuccessfully. Otherwise set (i,p,q) ← (i + q, p - q, 2q - p) (which moves p and q two positions back in the Fibonacci sequence); and return to Step 234 Fibonacci search
35.
“Sorting isthe process ordering a list of element in either ascending or descending order.” Sorting is the operation of arranging the records of a table according to the key value of each record, or it can be defined as the process of converting an unordered set of elements to an ordered set of elements Sorting is a process of organizing data in a certain order to help retrieve it more efficiently 35 SORTING
36.
Any sortalgorithm that uses main memory exclusively during the sorting is called as internal sort algorithm Internal sorting is faster than externalsorting Internal Sorting techniques : 1. Bubble sort 2. Selection sort 3. Insertion sort 4. Quick sort 5. Shell sort 6. Heap sort 7. Radix sort 8. Bucket sort 36 INTERNAL SORTING(types)
37.
Any sortalgorithm that uses external memory, such as tape or disk, during the sorting is called as external sort algorithm Merge sort is used in externalsorting 37 EXTERNAL SORTING
38.
A sortingmethod is said to be stable if at the end of the method, identical elements occur in the same relative order as in the original unsorted set 1. EXAMPLE : 38 STABILITY OF SORTING
39.
Sort efficiencyis a measure of the relative efficiency of a sort It is usually an estimate of the number of comparisons and data movement required to sort the data 39 SORT EFFICIENCY
40.
During thesorted process, the data is traversed many times Each traversal of the data is referred to as a sort pass In addition, the characteristic of a sort pass is the placement of one or more elements in a sorted list 40 PASSES IN SORTING
41.
Bubble sortis a simple sorting algorithm. This sorting algorithm is comparison-based algorithm in which each pair of adjacent elements is compared and the elements are swapped if they are not in order. This algorithm is not suitable for large data sets as its average and worst case complexity are of Ο(n2) where n is the number of items. How Bubble Sort Works? We take an unsorted array for our example. Bubble sort takes Ο(n2) time so we're keeping it short and precise. Bubble sort start with first two element, compare them to check which one is greater. And swap it. 41 BUBBLE SORTING
Quick Sort Algorithm Quick sort is based on divide-and-conquer strategy Quick sort is thus in-place, divide-and-conquer based massively recursive sort technique This technique reduces unnecessary swaps and moves the element at great distance in one move
78.
Quick Sort Algorithm Therecursive algorithm consists of four steps: If there is one or less element in the array to be sorted, return immediately Pick an element in the array to serve as a ‘pivot’ usually the left-most element in the list) Partition the array into two parts—one with elements smaller than the pivot and the other with elements larger than the pivot by traversing from both the ends and performing swaps if needed Recursively repeat the algorithm for bothpartitions
Merge Sort Algorithm •Merge sort is a sorting technique based on divide and conquer technique. With Average case and worst-case time complexity being Ο(n log n), it is one of the most respected algorithms. • Merge sort first divides the array into equal halves and then combines them in a sorted manner.
89.
The mostcommon algorithm used in external sorting is the merge sort Merging is the process of combiningtwo or more sorted files into the third sortedfile We can use a techniqueof merging two sorted lists Divide and conquer is a general algorithm design paradigm that is used for mergesort 89 Merge Sort
How merge sortworks take a n • To understand merge sort, we unsorted array as depicted below − • We know that merge sort first divides the whole array iteratively into equal halves unless the atomic values are achieved. We see here that an array of 8 items is divided into two arrays of size 4.
92.
• This doesnot change the sequence of appearance of items in the original. Now we divide these two arrays into halves. • We further divide these arrays and we achieve atomic value which can no more be divided.
93.
• Now, wecombine them in exactly same manner they were broken down. • We first compare the element for each list and then combine them into another list in sorted manner. We see that 14 and 33 are in sorted positions. We compare 27 and 10 and in the target list of 2 values we put 10 first, followed by 27. We change the order 19 and 35. 42 and 44 are placed sequentially.
94.
• In nextiteration of combining phase, we compare lists of two data values, and merge them into a list of four data values placing all in sorted order. • After final merging, the list should look like this −
95.
Algorithm of mergesort • Merge sort keeps on dividing the list into equal halves until it can no more be divided. By definition, if it is only one element in the list, it is sorted. Then merge sort combines smaller sorted lists keeping the new list sorted too. – Step 1 − divide the list recursively into two halves until it can no more be divided. – Step 2 − if it is only one element in the list it is already sorted, return. – Step 3 − merge the smaller lists into new list in sorted order.
101.
Shell Sort • Shellsort is a highly efficient sorting algorithm and is based on insertion sort algorithm. This algorithm avoids large shifts as in case of insertion sort if smaller value is very far right and have to move to far left. • This algorithm uses insertion sort on widely spread elements first to sort them and then sorts the less widely spaced elements. This spacing is termed as interval. This interval is calculated based on Knuth's formula as −
102.
• h =h * 3 + 1 where − h is interval with initial value 1 This algorithm is quite efficient for medium sized data sets as its average and worst case complexity are of O(n^2) where n are no. of items.
103.
How shell sortworks • We take the below example to have an idea, how shell sort works? • We take the same array we have used in our previous examples. {35,33,42,10,14,19,27,44} • For our example and ease of understanding we take the interval of 4. • And make a virtual sublist of all values located at the interval of 4 positions. Here these values are {35, 14}, {33, 19}, {42, 27} and {10, 14}
104.
We compare valuesin each sub-list and swap them (if necessary) in the original array. After this step, new array should look like this −
105.
Then we takeinterval of 2 and this gap generates two sublists - {14, 27, 35, 42}, {19, 10, 33, 44} We compare and swap the values, if required, in the original array. After this step, this array should look like this − And finally, we sort the rest of the array using interval of value 1. Shell sort uses insertion sort to sort the array. The step by step depiction is shown below −
107.
Shell sort Algorithm •We shall now see the algorithm for shell sort. • Step 1 − Initialize the value of h • Step 2 − Divide the list into smaller sub-list of equal interval h • Step 3 − Sort these sub-lists using insertion sort • Step 4 − Repeat until complete list is sorted
For example,suppose that we are sorting elements from the set of integers in the interval [0, m − 1]. The bucket sort uses m buckets or counters The ith counter/bucket keeps track of the number of occurrences of the ith element of the list 11 0 Bucket Sort
Radix Sort • RadixSort is generalization of Bucket Sort • To sort Decimal Numbers radix/base will be used as 10. so we need 10 buckets. • Buckets are numbered as 0,1,2,3,…,9 • Sorting is Done in the passes • Number of Passes required for sorting is number of digits in the largest number in the list.
114.
Radix sortis a generalization of bucket sorting Radix sort works in threesteps: Distribute all elements into m buckets Here m is a suitable integer, for example, to sort decimal numbers with radix 10 We take 10 buckets numbered as 0, 1, 2, …, 9 For sorting strings, we may need 26 buckets, and so on Sort each bucket individually Finally, combine all buckets 11 4 Radix Sort
115.
Ex. Range 0 to 99 0to 999 0 to 9999 Passes 2 Passes 3 Passes 4 Passes • In First Pass number sorted based on Least Significant Digit and number will be kept in same bucket. • In 2nd Pass, Numbers are sorted on second least significant bit and process continues. • At the end of every pass, numbers in buckets are merged to produce common list.
• Radix Sortis very simple, and a computer can do it fast. When it is programmed properly, Radix Sort is in fact one of the fastest sorting algorithms for numbers or strings of letters. • Average case and Worst case Complexity - O(n) Disadvantages • Still, there are some tradeoffs for Radix Sort that can make it less preferable than other sorts. • The speed of Radix Sort largely depends on the inner basic operations, and if the operations are not efficient enough, Radix Sort can be slower than some other algorithms such as Quick Sort and Merge Sort. • In the example above, the numbers were all of equal length, but many times, this is not the case. If the numbers are not of the same length, then a test is needed to check for additional digits that need sorting. This can be one of the slowest parts of Radix Sort, and it is one of the hardest to make efficient. • Radix Sort can also take up more space than other sorting algorithms, since in addition to the array that will be sorted, you need to have a sublist for each of the possible digits or letters.
124.
Heap sortis one of the fastest sorting algorithms, which achieves the speed as that of quick sort and merge sort The advantages of heap sort are as follows: it does not use recursion, and it is efficient for any data order It achieves the worst-case bounds better than those of quick sort And for the list, it is better than merge sort since it needs only a small and constant amount of space apart from the list being sorted 12 4 HEAP SORT
125.
The stepsfor building heap sort are as follows: Build the heap tree Start delete heap operation storing each deleted element at the end of the heaparray 12 5 Heap Sort
126.
ALGORITHM 1.Build a heap tree with a given set of data (a) Delete root node fromheap (b) Rebuild the heap afterdeletion (c) Place the deleted node in the output 12 6 Continue with step (2) until the heap tree is empty Heap Sort
127.
Analysis of HeapSort 12 7 The time complexity is stated as follows: Best case O(n logn) Average case O(nlogn) Worst case O(nlogn)