An insertion sort works by separating an array into two sections, a sorted section and an unsorted section. Initially the entire array is unsorted. The sorted section is then considered to be empty. The algorithm considers the elements in the unsorted portion one at a time, inserting each item in its suitable place among those already considered (keeping them sorted). To insert an item in a certain location all other items up to that location needs to be shifted to the right. However, memory writes are costlier than memory read and many write operations are required only to place a single item in its proper place.