Insertion sort is a simple sorting algorithm that works by iteratively inserting elements into a sorted subset of the array. It has a worst case time complexity of O(n^2) but performs well on small or partially sorted data. The algorithm splits the array into a sorted and unsorted part, taking elements from the unsorted part and inserting them into the correct position in the sorted part until the entire array is sorted.