我在实现快速排序时看见了几种方式,当面试问第一趟排序时的序列,我该选择那种。
pivot变量的存储方式:
- 把pivot 放到末尾或者开始。然后进行排序交换。
int pivot = serial[end];
int left = start, right = end - 1;
- 使用一个临时变量temp 保存 pivot的值,最后
serial[left] = temp
。
值的交换方式:
- 第一趟 right 索引找到比 pivot小的数就赋值给
serial[left] = serial[right]
, 然后找到left索引比 pivot大的值serial[right] = serial[left]
。 - 同时找到 left 和 right 然后
swap(&serial[left], &serial[right]
。
请问那种方式最合适,或者面试问的时那种。感谢你的帮助。