将一个数组的非零元素移动到数组的前面,零元素置于数组的后面

本文探讨如何有效地将数组中的非零元素移动到前面,同时将零元素移到数组的后面,这一操作常见于算法优化中,可以提高特定操作的效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  <span style="font-size:18px;">
题目:将一个数组中的所有非零元素移动到数组的前面,零元素移动到数组的后面,同时返回新数组中第一个0元素 的下标,要求不能改变数组中非零元素的顺序。比如 :   arr[10] = {1,3,0,2,0,0,8,0,4};   移动之后为:  arr[] = {1,3,2,8,4,0,0,0,0}</span></p>
方法一,利用两个循环,外层循环找到一个0元素,内层循环找到一个非0元素,然后交换位置,思路非常简单,但是代码写起来比较麻烦!!
1 #include<iostream>
  2 using namespace std;
  3 int main()
  4 {
  5   int array[10] = {2,5,0,1,0,0,8,4};
  6   int count = 0;
  7   for(int i = 0;i < 10;i++)
  8   {
  9     // 通过从前往后的遍历找到一个0元素
 10     if(array[i] == 0)
 11     {
 12       for(int j = i;j < 10; j++)
 13       {
 14         // 从前往后遍历找到一个非0元素,然后交换
 15         if(array[j] != 0)
 16         {
 17           array[i] = array[j];
 18           array[j] = 0;
 19           count++;
 20           break;
 21         }
 22       }
 23     }
 24   }
 25 
 26   //输出数组中的元素
 27   for(int i = 0;i < 10;i++)
 28   {
 29     cout << array[i];
 3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值