Hello friends now we will see how does the while loop work we will see here that while loop is taken as I less than n as we’ve initialized I to 0 so we will terminate when the value of I is equal to n that is the loop will work from 0 to n now the first element of the array that is the original list as seen over here is 25 86 56 13 and 45 what we have already done in the previous example the first element of the array is assigned to variable min as I has a value of 0 so array of I that is array of 0 at the zeroth location is assigned to the variable min so my min gets the value of 25 now we vary the for loop as we have to compare on other elements for this particular array with this value we say for J is equal to I plus 1 J less than 5 J plus plus here I have taken the value as 5 but we’ve already initialized the scanf value of n this can be changed to end but for my example as we have only 5 elements this for loop I have put it as 5 but for the more practicality of my program for my program to have a more practical implementation the value of J can be considered or should be considered as n now why do we take the value from I plus 1 because we’ve initialized the value of min that is the first value of my element that is the value of array at a location 0 2 min I don’t need to compare the same element with itself so I have to always start with the next element that is the reason I start all my Jay loops for this selection sorts for I plus one now what do we do we have the minimum value which has the first element value of the array so men has a value 25 now we compare the value of men to all the subsequent elements of the array wherever the value of men is greater so that is the point where we need to swap the values here we start comparing array of j JH starts from i plus 1 so in our case it starts from 86 we compare 25 with 86 but my 25 is not greater than 86 so we increment the value of J and it goes now 256 but 25 again is not greater than 56 also so here again there is no swapping that takes place that is there is no exchange of values now as we increment the value of J we reach to a location a of J where the value stored is 13 25 is greater than 13 so here I need to swap or exchange the two values now what do I do we say min is equal to array of J that is whatever value I got at the array location J is now the minimum value so I assign it to a variable min after I’ve assigned to the variable men now I have to swap the value and exchange the values at a location a of array of AI and array of J so we follow these three simple steps swap is equal to array of I swap is nothing but simple variable which is used to store the temporary value stored at a location array of I in our case that is the value 25 so swap gets the value of 25 now the next step is array of five is equal to area of J array of J has the value 13 as we say array of I is equal to area of J so 13 gets assigned to area of I so at place of 25 we get a value 13 and the next is area of J is equal to swap so whatever is a value stored at the temporary variable swap will now be assigned to array of J so my past one up the sword looks as shown in the figure so after the past one thirteen comes at the first location that is the beginning of the list and then 25 goes to the array location J so after this three steps of swapping we come to a conclusion that the smallest element of the array comes at the beginning of the list now we have to close all the loops that we had opened so now the next step is end of F and off for now after ending the for loop what do I have to do this is only for the first pass that is for one variable now as I said if there are five element my selection sort will take at least four passes to sort this particular list so I have to increment the value of I which is given by the statement I plus plus here when I increment the value of I and then I have to close the while loop this increment of I will continue till the value of I becomes equal to n which in our cases five after continuously working for five loops when my value of I becomes equal to n that is five we come out of this loop and we see how the output is printed so we give the printf statement and we say the sorted list is the ascending order for I is equal to zero to I less than n I plus plus and I print the complete sorted I and the next step is the end of the main statement here we have seen a simple small program of how we sort the small five elements in an array the next step that we are going to see is an insertion sort now what is an insertion sort as the owner aware in social means inserting something in between a list if we have six element and we want to put something in between that is insertion sort a simple example of an insertion sort is the cards the playing cards in a hand of a person and you try to insert a card in between but let’s follow a logical reasoning for it so in the insertion sort it always maintains two zones in the array which has to be sorted so it is distributed as a sorted and unsorted array at the beginning the sorted zone consists of only one element that is the first element that we are sorting as we will see in all these internal sorting algorithms the first element is always considered as the sorted list from the complete unsorted list of array on each step of the algorithm we expand the sorted zone by one element and inserting the first element from the unsorted list to the proper place in the sorted soil and shifting all the larger elements to the slot down that is the unsorted way now in this algorithm we follow a very simple procedure of pushing the elements from the sorted zone to the unsorted zone that is my element which is needing to be sorted and which is sorted comes to the beginning and all the unsorted elements are pushed back so on each step I will get an element sorted and it will be placed at its final location whether in ascending or in descending order so what happens next in insertion sort if we consider this as a original list of five elements in this five elements we have taken 2586 56 13 and 45 now what do we do if you see this whatever we do at the first instance is known as the first iteration for an insertion sort for my insertion sort 25 is at a location I and rest elements will follow as we move further so as 25 as location I so it is compared with all the further elements now first step that I do is I compare 25 with 86 so if we see is 25 greater than 86 the answer is no so there will not be any insertion sorting method or technique that will be applied over here so my J gets incremented by one my J reaches to a location of 56 now again 25 is compared with 56 but again we come to the same conclusion that 25 is not greater than 56 so there is no exchange that takes place so J is incremented by 1 and J reaches to a location 13 it reaches to a location where I find an element 30 and 25 is greater than 13 so here we apply the insertion sort method now what happens in this method is my 13 has to be moved to a location of 25 and rest all my elements have to be shifted a very simple example of this is if a person is having a deck of cards in the hand with the same numbers 2586 56 13 and 45 so we have to remove the card 13 from its location and place it first so what will happen my all other cards will be shifted to its respective position that is one element to their right now what will we do we don’t have a deck of cards we have arrays so whatever you supposed to do we are supposed to move the element 13 to a location 25 and 56 to the location of 1386 to the location of 56 and 25 to the location of 86 this is how it will be done the actual algorithm implementation we will see in some time now after the first iteration when I am shifting the elements my array becomes 13 25 86 56 and 45 now we see that after my first iteration my first sorted element is fixed at a location first that is and the value of I so after my first hydration this list becomes my input for my second iteration in the second iteration you will see the value of I is now at a location 25 so my sorted list has one element and my unsorted list has four elements now what do we do we again start comparing I compared 25 with 86 but as 25 is less than 86 again there will be no insertion sort method applied away up J will be incremented by one J will reach to the next location that is 56 25 is less than 56 again there will be no insertion sort method applied and last number is 45 so what happens this number is already sorted in this particular list so the final list after the second iteration is this so 30 25 86 56 and 45 so what has happened as we told in the first introduction that as we continue in our algorithm or we continue with our hydrations the sorted list will increase and the unsorted list or the unsorted zone will reduce down so now what we see we have out of the five elements in the list we have two elements which are sorted and three elements are unsorted so 13 and 25 are the part of sorted list and 86 5645 on the part of unsorted list and second hydration output becomes an import to the third iteration which is this now for the third iteration we apply what we again check 86 with 56 now what do we see it is X is greater than 56 so we move their values that is 56 moves to the location of 86 and 86 moves to the location of 56 this is what I get but as I increment my value of J what happens I and J location values are again compared so 56 is greater than 45 so again the insertion sort method has to be applied over here and when we apply this we get the value of 45 is moved to the location of 56 86 is moved at a location of 45 and 56 is moved to the location of 86 so after the third iteration it becomes 30 25 45 56 and 86 so now my sorted zone has increased to three elements and my unsorted zone as is reduced to two elements but we can see and we can presume and we can predict that 56 and 86 in the unsorted zone are already sorted but still we have to apply the insertion sort method we see that 56 is less than 86 again there will not be any insertion sort method applied over here so my fourth iteration gives me 1325 45 56 986 so my after my fourth iteration the four elements are sorted and one is remaining but when we checked in the fifth vibration 86 is the last element and we always need number of elements minus one to sort my list that is the number of iterations required to sort any list is always number of elements minus one so that is four and we will see we have seen this that the list automatically gets sorted when we reach the last element in the array or in the list so in the fifth iteration my array is already sorted and the list looks like 30 25 45 56 and 86 this is how the insertion sort is diagrammatically represented to understand the elements are sorted and how the elements are moved from their initial position to their final position in the complete list thank you now we will see how we implement the program or an algorithm for the insertion sort we’ve taken the same list which is and shown the die is shown we have taken the same list with five elements and diagrammatically shown how the shift has to take place but now to see the code or the algorithm or the pseudocode for it how it has to be written now the first step is for I is equal to zero to I less than n minus 1 I plus plus now what does this statement signify I start with a location 0 that is my I is at a location for the array index is 0 so 25 is at an index I value of 0 I vary the followed only till n minus 1 and n if it has got a value of 5 which is in our case 5 minus 1 is equal to 4 so it will be executed for the value of I which is less than 4 that is still 3 now why we take it till 3 that is for the index location 0 1 2 3 if we see the list which is given 0 index location is element 25 one index location is element 86 tour index element to index location is element 56 and the three index location is element 13 why we have taken it in the index location 3 is my element at the indexed location 3 has to be compared with the index location for if I take it n minus 1 equal to that is I is then equal to n minus one then I will be unnecessarily wasting a time requirement for the execution as I will be comparing the same element by itself so we take the value of I is less than n minus 1 if n is 5 n minus 1 is 4 so it will be varying only till the value of 3 as it comes to 4 it will come out of this loop and for J I always start with I plus 1 because we don’t have to compare the same element by itself that is if I start J either from 0 or J from the value of I then I will be comparing the element at the index location I by itself which we don’t want we don’t want to waste our execution time so we have to always take the next loop which has to start from I plus 1 so I plus 1 will be I plus 1 will be in our case if I is at a location of 0 I plus 1 will be at a location of one so we’ll compare the elements at the index location 0 with the index location 1 so if if I is greater than a of J that is a of I is 25 a of J is 86 if it is greater then we perform the insertion sort but if we see how we don’t have to perform insertion sort because 25 is less than 86 so we increment the value of j j reaches to a location of 56 here again if i is compared with a of j that is 25 is compared with 56 so again there will not be any insertion method implementing over yeah so we move to j is incremented by 1 so we move to the index location 14 at this instance we see that a of i is greater than a of J that is 25 is greater than 13 so what do we do next we say temp is equal to a of G so whatever is a value at a location of jail but as a of J which holds the value 13 will be moved to a temporary variable temp after we’ve moved the value at a of J to 10 now we can move rest all the values to it’s right inside that is 56 to 13 it is 6 256 and 25 to it is 6 how do we do it as we see here the value of J has to decriminalise 5 till that time the shifting of elements have to take place so how do we do it we see it over here we say while J is not equal to i we keep performing this statement at present my J has a value 3 my I has a value 0 I say a of J is equal to a of J minus 1 FJ at present has nothing or because it had a value 13 which we moved to a temporary variable I say a of J gets the value at a location where the value a of J minus 1 so a of J minus 1 value moves to a of J so 56 now moves to the location where protein was stored and then I say J minus minus so the value of J is now decremented and J becomes now 2 it will continue it will go up in the while loop which is end of while loop now Jay has a value of 2 I has a value of 0 which is still not equal so it will again come back into the loop and a of J at a location of 2 and have a value of a of J minus 1 which is at a you know one so 86 moves 256 days again decremented by 1 J becomes 1 it goes up 1 is not equal to 0 so we again come into the loop and we say a of J is equal to a of J minus 1 so 25 moves to the location where 86 were stored and then we decrement the value of J and J becomes 0 when we come to the while loop yes it is satisfied J is equal to I so it comes out of the loop after coming out of the loop we will observe that 13 what we stored in a temporary location is now moved to the value is now moved to a location a of I so a or fire gets the value of 13 now end of the if loop and of the for loop for J and end of the for loop for I this is how the first iteration is performed and all other iterations for inter insertion sort will be performed now after seeing what is insertion sort let’s see what are the advantages of insertions of now in this advantages the insertion sort repeatedly scans the items in the list each time inserting the item in the unordered sequence into its correct position the second main advantages the insertion sort is simple it also exhibits a good performance when it is dealing with a small list the insertion sort is an in-place sorting algorithm so the space required for it is minimal now the few disadvantages of it – what are the disadvantages the disadvantages it does not perform well when compared to other sorting algorithm because there’s lot of shifting which takes place of elements and when the steps are inspired and the list is large insertion sort always leads to a problem as the time and the space complexity will increase so insertion sort is useful we can say not as a disadvantage but insertion sort is useful only when my list is small now what is the complexity for the insertion sort execution time for the selection as well as insertion sort is n into n minus 1 by 2 and the time complexity for the selection and the insertion sort both are n into n minus 1 by 2 thank you