您的位置:首页 > 其它

一道算法题(负数左边,正数右边)的最优答案

2011-09-19 09:10 113 查看
int[] source = { 5, -3, 6, -7, -6, 1, 8, -4, 0, 0 };
int toRightIdx = 0;
int toLeftIdx = source.Length - 1;
int leftIdx = 0;
int rightIdx = source.Length - 1;
int[] result = new int[source.Length];

while (true)
{
if (toLeftIdx >= 0)
{
int left = source[toRightIdx++];
if (left < 0) result[leftIdx++] = left;

int right = source[toLeftIdx--];
if (right > 0) result[rightIdx--] = right;
}
else
{
result[rightIdx--] = 0;
}
if (leftIdx > rightIdx) break;
}


应该算是最好的解法了吧:P
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐