整型数组处理算法(七)重排问题

博客探讨了如何处理整型数组的重排问题,从数组末尾开始遍历,遇到0则向前寻找非0元素交换,确保0移动到数组开头。提供了具体的实现示例并邀请读者尝试和反馈。
摘要由CSDN通过智能技术生成
给定含有n个元素的整型数组a,其中包括0元素和非0元素,对数组进行排序,要求:
1. 排序后所有0元素在前,所有非零元素在后,且非零元素排序前后相对位置不变
2. 不能使用额外存储空间
例子如下:
输入 0, 3, 0, 2, 1, 0, 0

输出 0, 0, 0, 0, 3, 2, 1


分析:

从数组最后开始往前遍历,遇到为0的,就往前找不为0的元素与之交换,如果找不到不为0的元素,那前面都是0,可以返回了。


实现如下:

void Arrange(int* a, int n)
{
    int k = n -1 ;
    for (int i = n -1; i >=0; --i)
    {
        if (a[i] == 0)
        {
			for (int j= i-1; j>=0; j--)
			{
				if (a[j]!=0)
				{
					
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值