数据结构-数组重新排序-实现不改变正数负数的相对顺序正负交叉输出
题目介绍
输入一组数据例:[2,8,-9,4,7,11,-7,-14],要求输出时正负交叉,同时保持正数(即2,8,4,7,11)和负数(即-2,-7,-14)的相对顺序不变,输出结果为[2,-9,8,-7,4,-14,7,11]
解决问题思路介绍
1、首先判断数组中前两个数是否是正负交叉的,通过乘积是否大于零来判断,如果小于零,继续判断下两个数,如果大于零,进行第2步。
2、首先确定以第一个数(i)为基准,然后向后查找第一个与之符号相反的位置(j),找到位置后进行第3步;如果找不到(j>=length)的话,跳出循环,进行第4步。
3、将确定好的位置之前的数依次交换,类似于冒泡,将找到的这个第一个与之符号相反的数放在(i)的后面。
4、然后再判断第二个数(++i),直到最后一个数结束。
代码实现(C/C++)
//C、C++语言
#include "stdafx.h"
#include<iostream>
#include<cstring>
using namespace std;
void swap(int *a, int *b)
{
int temp = *a;
*a = *b;
*b