add a shell sort algorithm