不改变正负数之间的相对顺序重新排列数组

来源:互联网 发布:2016淘宝销售额 编辑:程序博客网 时间:2024/04/30 15:21

一个未排序整数数组,有正负数,重新排列使负数排在正数前面,并且要求不改变原来的正负数之间相对顺序。
比如: input: 1,7,-5,9,-12,15 ,ans: -5,-12,1,7,9,15 。

如果题目要求要保持相对顺序不变,那么就有技术含量了,那么就要整块整块的移动,从后往前扫描,遇到负数,开始记录负数区间,然后遇到正数,记录前面的正数区间,然后把整个负数区间与前面的正数区间进行交换,交换区间但保序的算法类似(a,bc->bc,a)的字符串原地翻转算法。交换完之后要继续向前一直扫描下去,每次碰到负数区间在正数区间后面,就翻转区间。你懂的!