C 不改变顺序,原址剔除数组中的0元素
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#include <time.h> #define NUM_CNT 10000000
#define FILE_NAME "num.txt" void genNumber()
{
int i = ;
int *arr = (int*)malloc(sizeof(int) * NUM_CNT);
for(;i < NUM_CNT; ++i)
{
arr[i] = i;
}
FILE *fp = fopen(FILE_NAME,"w");
if(NULL == fp){printf("open %s failed\n",FILE_NAME);}
for(i = ;i < NUM_CNT; ++i)
{
if(i% == ){arr[i] = ;}
fprintf(fp,"%d ",arr[i]);
}
fclose(fp);
} void readNum(int arr[])
{
int i = ;
FILE *fp = fopen(FILE_NAME,"r");
if(NULL == fp){printf("open %s failed\n",FILE_NAME);}
for(i = ;i < NUM_CNT; ++i)
{
fscanf(fp,"%d ",&arr[i]);
}
fclose(fp);
} void dump(int *arr)
{
int i = ;
for(i = ;i < NUM_CNT; ++i)
{
printf("%d ",arr[i]);
}
printf("\n");
} void del(int *arr,int len)
{
int i = ,j = ,t = ;
for(; i < len - ; ++i)
{
if(arr[i] == )
{
j = i + ;
while(j < len && arr[j]==)++j;
if(j < len)
{
t = arr[i];
arr[i] = arr[j];
arr[j] = t;
}
}
}
} void del1(int *arr,int len)
{
int i = ,j = ,t = ;
while(j < len && arr[j]==)++j;
if(j == len )return;
for(; i < len - && j < len; ++i)
{
if(arr[i] == )
{
t = arr[i];
arr[i] = arr[j];
arr[j] = t;
while(j < len && arr[j]==)++j;
}
}
} int main()
{
int t = ;
int *arr= (int*)malloc(sizeof(int) * NUM_CNT);
genNumber();
readNum(arr);
//dump(arr);
t = clock();
del1(arr,NUM_CNT);
printf("use time:%lu ms\n",clock() - t);
//dump(arr);
return ;
}
C 不改变顺序,原址剔除数组中的0元素的更多相关文章
- C语言 · 删除数组中的0元素
算法提高 6-9删除数组中的0元素 时间限制:1.0s 内存限制:512.0MB 编写函数CompactIntegers,删除数组中所有值为0的元素,其后元素向数组首端移动.注意,C ...
- 9.11排序与查找(三)——给定一个排序后的数组,包括n个整数,但这个数组已被旋转过多次,找出数组中的某个元素
/** * 功能:给定一个排序后的数组.包括n个整数.但这个数组已被旋转过多次,次数不详.找出数组中的某个元素. * 能够假定数组元素原先是按从小到大的顺序排列的. */ /** * 思路:数组 ...
- Java 向数组中添加一个元素
方法 一般数组是不能添加元素的,因为他们在初始化时就已定好长度了,不能改变长度. 向数组中添加元素思路: 第一步:把 数组 转化为 集合 list = Arrays.asList(array); 第二 ...
- ES6数组中删除指定元素
知识点: ES6从数组中删除指定元素 findIndex()方法返回数组中满足提供的测试函数的第一个元素的索引.否则返回-1. arr.splice(arr.findIndex(item => ...
- LeetCode#26 | Remove Duplicates from Sorted Array 删除有序数组中的重复元素
一.题目 Description Given a sorted array, remove the duplicates in-place such that each element appear ...
- 在主方法中定义一个大小为10*10的二维字符型数组,数组名为y,正反对角线上存的是‘*’,其余 位置存的是‘#’;输出这个数组中的所有元素。
//在主方法中定义一个大小为10*10的二维字符型数组,数组名为y,正反对角线上存的是‘*’,其余 位置存的是‘#’:输出这个数组中的所有元素. char [][]y=new char [10][10 ...
- 在主方法中定义一个大小为50的一维整型数组,数组i名为x,数组中存放着{1,3,5,…,99}输出这个数组中的所有元素,每输出十个换一行
package hanqi; import java.util.Scanner; public class Test7 { public static void main(String[] args) ...
- (转载)PHP删除数组中的特定元素的代码
(转载)http://www.jb51.net/article/30689.htm 我们知道,PHP没有提供专门删除一个特定数组元素的方法.但是可以通过unset()函数来完成这种要求比如下面的程序: ...
- [jstips]向数组中插入一个元素
向现有数组中插入一个元素是经常会见到的一个需求.你可以: 使用push将元素插入到数组的尾部: 使用unshift将元素插入到数组的头部: 使用splice将元素插入到数组的中间: 上面那些方法都是常 ...
随机推荐
- oracle系列--第一篇 数据库基础
第一章 数据库基础 1.1 数据管理概述 1.1.1 什么是数据管理 与我们人类相比,计算机的最大优势就是能够高速.精准地运行,其运行的过程就是执行程序代码和操作指令.处理数据的过程.可以说,数据处理 ...
- UiAutomator 测试工程开发小结
一. 关于bundle无法导入中文参数 答: 将文件改为UTF-8格式 二. 关于对无法抓取的控件进行快速输入问题 答: 主要通过pressKeyCode方法,首先将光标锁定在 ...
- Java虚拟机(JVM)中的内存设置详解
在一些规模稍大的应用中,Java虚拟机(JVM)的内存设置尤为重要,想在项目中取得好的效率,GC(垃圾回收)的设置是第一步. PermGen space:全称是Permanent Generation ...
- Solve error: Cannot open include file: 'X11/Xlocale.h': No such file or directory
When you use FLTK with VS2010, you may get the error: fatal error C1083: Cannot open include file: ' ...
- for循环下九九乘法表
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- IP地址在数据库里面的存储方式
大多数公司的表结构都需要经过DBA进行审核,有时候你会看到存储IP地址采用varchar(15),这种方式都是传统的做法,这种方法需要占用15个字节,那么有更省空间的做法么?肯定是有的,那就是用int ...
- Hibernate validation 注解 springmvc 验证 分组
SpringMVC验证框架Validation特殊用法 1. 分组 有的时候,我们对一个实体类需要有多中验证方式,在不同的情况下使用不同验证方式,比如说对于一个实体类来的id来说,保存的时候是不需 ...
- HDU 1257 最少拦截系统(Dilworth定理+LIS)
最少拦截系统 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...
- 管理Sass项目文件结构
构建你的结构体系 CSS预处理器的特点之一是可以把你的代码分割成很多个文件,而且不会影响性能.这都要归功于Sass的@import命令,只要在你的开发环境下,你调用不管多少文件,最终将编译出一个CSS ...
- bash: /usr/lib/jvm/jdk1.7.0_80/bin/java: No such file or directory 问题
在安装java的时候,经常会遇到一些奇奇怪怪的问题. 在配置好环境变量之后,执行java -version,出现: bash: /usr/lib/jvm/jdk1.7.0_80/bin/java: N ...