优化了交换位置的代码 存在bug