用一个set保存已经交换过的元素 比如对于序列[1,1,2] 当处理第一个1时,由于set中没有1,所以处理以1开头的排列 当处理第二个1时,由于set已经包含了1,即已经处理过相同的排列,所以不交换 当处理2时,由于set不包含1,即没有处理以2开头的排列,所以1与2交换