数据结构-数组重新排序-实现不改变正数负数的相对顺序正负交叉输出

该博客介绍了如何实现数组正负交叉输出,保持正数和负数的相对顺序不变。通过判断数组中数的正负关系,找到第一个符号相反的数进行交换,从而达到目标效果。提供了解决思路和C/C++代码实现。
摘要由CSDN通过智能技术生成

数据结构-数组重新排序-实现不改变正数负数的相对顺序正负交叉输出

题目介绍

输入一组数据例:[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 
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值