数组中移动0至后面
2014-03-05 11:59
225 查看
int A[nSize],其中隐藏着若干0,其余非0整数,写一个函数int Func(int* A, int nSize),
使A把0移至后面,非0整数移至数组前面并保持有序,返回值为原数据中第一个元素为0的下标。
(尽可能不使用辅助空间且考虑效率及异常问题,注释规范且给出设计思路)
#include<iostream>
using namespace std;
int fn(int *a, int size)
{
int *p;
int i;
int n;
int returnval = size;
p = a;
n = 0;
for(i=0;i<size;i++)
{
if(*(p+i)==0)
{
if(returnval==size)
returnval = i;
n++;
continue;
}
if(n!=0&&*(p+i)!=0)
{
*(p+i-n) = *(p+i);
*(p+i) = 0;
}
}
return returnval;
}
int main()
{
int a[100];
int i;
int size;
int zero;
while(cin>>size)
{
for(i=0;i<size;i++)
cin>>a[i];
zero = fn(a,size);
for(i=0;i<size;i++)
cout<<a[i]<<" ";
cout<<zero<<endl;
}
return 0;
}
使A把0移至后面,非0整数移至数组前面并保持有序,返回值为原数据中第一个元素为0的下标。
(尽可能不使用辅助空间且考虑效率及异常问题,注释规范且给出设计思路)
#include<iostream>
using namespace std;
int fn(int *a, int size)
{
int *p;
int i;
int n;
int returnval = size;
p = a;
n = 0;
for(i=0;i<size;i++)
{
if(*(p+i)==0)
{
if(returnval==size)
returnval = i;
n++;
continue;
}
if(n!=0&&*(p+i)!=0)
{
*(p+i-n) = *(p+i);
*(p+i) = 0;
}
}
return returnval;
}
int main()
{
int a[100];
int i;
int size;
int zero;
while(cin>>size)
{
for(i=0;i<size;i++)
cin>>a[i];
zero = fn(a,size);
for(i=0;i<size;i++)
cout<<a[i]<<" ";
cout<<zero<<endl;
}
return 0;
}
相关文章推荐
- 将数组中指定的前N位移动到数组的最后面
- 将数组的后面m个数移动为前面m个数
- 数组中移动0至后面
- 将数组中指定数量的元素移动数组后面
- 将数组中指定数量的元素移动数组后面的实现代码
- 将数组的后面m个数移动为前面m个数
- 如何将数组中的后面m个数移动为前面m个数
- 程序员面试题目总结--数组(五)【数组的后面m个数移动为前面m个数、列的前n项数据、判断整数x是否可以表示成n个连续正整数的和、数组中出现奇数次的元素、二维数组中的查找】
- 将数组中指定的前N位移动到数组的最后面
- C语言实现一个数组每个元素依次向右移动k位(后面的往前面补,不开辟新空间)
- LeetCode283——Move Zeroes(将0移动到数组最后面)
- 将一个数组的非零元素移动到数组的前面,零元素置于数组的后面
- 给你一个正整数和负整数的数组。 如果指数n是正数,则前进n步。 相反,如果是负数(-n),则向后移动n步。 数组是否有环
- 在一个长度为10的整形数组中,已经放置好了任意10个整数。要求用户任意输入 一个整数,判断该数字是否在数组中。如果在,删除数组中该元素,并把后面的 元素往前挪。(让空出的位置在最后)
- js 数组操作常用方法。 push():在数组后面加入元素,并返回数组的长度 unshif()t:在数组前面加入元素,并返回数组的长度 pop()删除最后一个元素
- Leetcode 283. Move Zeroes 移动数组中的零 (数组,模拟)
- 把数组中的0移到数组前面,其它数字移到后面,并且保持数字间的相对顺序
- 基于数组的位运算4 位数组按bit位整体移动
- php数组函数序列之prev() - 移动数组内部指针到上一个元素的位置,并返回该元素值
- 数组移动