shell sort. a lot needs to be fixed. but good enough so far