整数数组0元素后移
来源:互联网 发布:windows开机过程 编辑:程序博客网 时间:2024/05/02 22:10
题目:如下:int A[nSize],其中隐藏着若干0,其余非0整数,写一个函数int Func(int* A, int nSize),使A把0移至后面,非0整数移至数组前面并保持有序,返回值为原数据中第一个元素为0的下标。(尽可能不使用辅助空间且考虑效率及异常问题,注释规范且给出设计思路)。
思路:计算0元素个数count,将非零元素向前移动,最后数组末尾填充count个0
#include "stdafx.h"#include <iostream>using namespace std;int Func(int *A, int nSize){ if (NULL == A || nSize <= 0) { return -1; } int count = 0; int pos = -1; for (int i = 0; i < nSize; i++) { if (-1 == pos && A[i] == 0) { pos = i; count++; } else if (A[i] == 0) { count++; } else { for (int j = 0; j < count; j++) { A[i - j - 1] = A[i - j]; } } } for (int i = count; i > 0; i--) { A[nSize - i] = 0; } return pos;}int _tmain(int argc, _TCHAR* argv[]){ int A[] = {6 ,0 ,3, 4, 0, 5, 9, 6, 4, 6, 5, 8, 0, 0}; int nSize = sizeof(A)/sizeof(A[0]); cout<<"before: "; for (int i = 0; i < nSize; i++) { cout<<A[i]<<" "; } int pos = Func(A, nSize); cout<<endl<<"after: "; for (int i = 0; i < nSize; i++) { cout<<A[i]<<" "; } cout<<endl<<"原数组第一个0元素的下标为: "<<pos<<endl; cout<<endl; return 0;}
运行界面如下:
- 整数数组0元素后移
- 整数数组0元素后移
- 递归---整数数组元素A[0]~A[i]中的最小值
- Java声明一个10个元素的整数数组,随机赋值,打印输出,排序后,打印输出
- AndroidJNI.SetShortArrayElement设置短整数数组元素
- 整数型数组元素拼接问题
- 整数型的有序递增数组循环右移x位后,查找指定整数 算法
- 给定数组,去掉0元素后将剩下的元素赋给新的数组
- 给定一个排序后的数组,包含n个整数,但这个数组已被旋转过很多次,编写代码找出数组中的某个元素
- 数组内部元素操作,将所有0移到后尾
- 整数逆序后放入数组中
- 数组最后一位放在数组第一位,其余数组元素一次后移
- 定义一个一维数组,其元素个数从键盘中输入,元素的值为[100,200]的随机整数。 (1)输出数组的每个数 (2)对数组的数进行升序排序,输出排序后的数组元素 (3)从键盘上输入一个整数,查找该整数是
- 问题:利用输入输出流重载实现一个整数数组的输入和输出。 要求:输入一个数组大小 及 所有元素的值,排序后输出该数组的所有元素。
- 数组剔除元素后的乘积
- 题目:数组剔除元素后的乘积
- LintCode 数组剔除元素后的乘积
- (50)数组剔除元素后的乘积
- 教你如何成为数据科学家(十)完
- php初探
- YouCompleteMe推荐
- 哮喘按摩
- 搜索建议(suggest)配置
- 整数数组0元素后移
- printf("%d",5.01)和printf("%f",5)的输出结果
- 对于/etc/fstab的解释及修改文件系统的label
- 二分图的最大匹配、完美匹配和匈牙利算法
- vector容器成员函数resize与reserve的区别
- C++标准库的异常类层次结构
- Infobright高性能数据仓库
- ACM学习-POJ-1050-To the Max
- Android_Thread多线程_Handler,Message,Looper,MessageQueue多线程和特殊UI更新