rearrange array smart swap