这样子都要致谢一下,服了# Biology - 生物学
j*l
1 楼
这道题就是那道被讨论得热火朝天的MS老题,如何把负数扫到左边,正数扫到右边。对
所有的正数和所有的负数,都不能改变原有的相对次序
/*
{1, 5, -5, -8, 2, -1, 15}
要把负的扫到左边,正的扫到右边。
不能改变顺序
得到{-5 -8 -1 1 5 2 15}
*/
void swap_numbers(int input[], int n)
{
int temp;
for (int i = 0; i < n; )
{
if (input[i] > 0 && i < n - 1 && input[i + 1] < 0)
{
temp = input[i];
input[i] = input[i+1];
input[i+1] = temp;
if (i > 0 && input[i-1] > 0)
i--;
else
i++;
所有的正数和所有的负数,都不能改变原有的相对次序
/*
{1, 5, -5, -8, 2, -1, 15}
要把负的扫到左边,正的扫到右边。
不能改变顺序
得到{-5 -8 -1 1 5 2 15}
*/
void swap_numbers(int input[], int n)
{
int temp;
for (int i = 0; i < n; )
{
if (input[i] > 0 && i < n - 1 && input[i + 1] < 0)
{
temp = input[i];
input[i] = input[i+1];
input[i+1] = temp;
if (i > 0 && input[i-1] > 0)
i--;
else
i++;