In the classical selection sort algorithm to sort a list with n data elements n-1 passes are carried out. Each pass finds out the largest or the smallest data item. To do this the entire list is checked form the beginning until the portion of the list, which was sorted in the earlier passes. But, instead of looking from the start of the list in each pass, some information regarding the locations of the local maximum or minimum gathered and stored in the earlier iterations can be used to omit some useless search operations and the overall runtime can be reduced. The enhanced selection sort algorithm is based on this idea. The bubble sort also places the largest element in the proper location in each pass. As the bubble sort and selection sort are closely analogous, the enhancement of the bubble sort is done with the same method. In the classical insertion sort a sorted portion is maintained and in each pass of the algorithm a data item from the unsorted portion is inserted into the sorted portion from a certain side such that with the additional item it remains sorted. Considering just one side to insert leads many shift operations, which can be reduced if both sides of the sorted list is considered to insert a data item. The enhanced insertion sort incorporates this strategy.