0 0

如何统计一个数组中某个数的个数?20

有一个7万多列,6万多行的二维数组,里面存储的数字只有0,1
为了节约空间,以bit形式存放。

需求是,对这个数组的每一行,统计数字“1”出现的次数。
现在用的是最笨的办法,就是1位1位的去统计,效率很低,
请问有没有什么更好的快速的算法?
问题补充:
> 我想既然使用bit存放。应该是如下定义:
> u_char a[10000];
> 或者 u_int8_t a[10000];
> 然后构造一个映射数组,下标为一个整数, 内容为改整数对应的二进制的1的个数。

> u_int8_t dict[256] = {0,1,1,2,1,...};
> 表示,0,1,2,3,4,对应的二进制数种的1的个数。

上述方法在优化过程中已经使用,
希望寻找其他的快速算法。
2008年7月27日 21:37

5个答案 按时间排序 按投票排序

0 0

要是我说呢~
这个东西没什么算法可言
举个例子说
算法就像筛沙子一样,一个好的算法就好像一个粒度适中的网
既不会太细,速度太慢;又不会太粗,什么都过得去
楼主的例子我觉得用不上算法的。。。

2008年7月29日 08:56
0 0

如路上所说,至少需要遍历一边,这个是不能少的。

我觉得能从这里改善一些
“现在用的是最笨的办法,就是1位1位的去统计,效率很低,”
方法就是使用静态查找表来替换 1位1位 的统计。

我想既然使用bit存放。应该是如下定义:
u_char a[10000];
或者 u_int8_t a[10000];
然后构造一个映射数组,下标为一个整数, 内容为改整数对应的二进制的1的个数。

u_int8_t dict[256] = {0,1,1,2,1,...};
表示,0,1,2,3,4,对应的二进制数种的1的个数。

统计时,不用按位计算,可以按Byte(u_int8_t)来计算,用其所代表的十进制数值去映射数组中查找对应的1的个数。


个人觉得应该能快一些。个人意见仅供参考。

2008年7月28日 17:36
0 0

哈哈,2楼的大哥顶我啦

2008年7月28日 12:09
0 0

必须遍历,所以没有更好的方法

2008年7月28日 09:05
0 0

因该没有的吧。。。
可能是小弟太菜,不知道有什么办法
不管什么算法,它都要遍历一次,完整的东西
所以最佳算法就无从谈起了。。。
不知道说的对不对
不对可以拍砖
哈哈

2008年7月28日 08:54

相关推荐

    Java统计数组中相同元素个数

    Java文件中实现了统计数组中相同元素个数的功能以及统计数组中小于某个元素的所有元素的数量功能

    查找数组中和为某个值的元素对的个数

    在编程领域,"2-sum"问题是一个常见的算法挑战,它涉及到在给定的整数数组中寻找两个元素,使得它们的和等于一个特定的目标值。这个问题对于理解和掌握基础的算法设计以及数据结构优化至关重要,特别是在面试和编程...

    用python一行代码得到数组中某个元素的个数方法

    ### 使用Python一行代码获取数组中特定元素的个数 在Python编程中,处理数组或列表是非常常见的任务之一。本文将详细介绍如何使用一行Python代码来计算数组(或列表)中某个特定元素出现的次数。这种方法不仅简洁...

    Labview应用技术 使用数组函数寻找数组中负数个数(拓展).docx

    1. 创建一个数组控件并在其属性中设置初始值。 2. 使用“Filter Array”函数,设置条件为小于零(),这样可以筛选出所有负数。 3. 将筛选后的数组连接到“Element Count”函数,它会返回数组中的元素数量,即负数的...

    统计一个字符串中某个字符的个数

    在编程领域,统计一个字符串中特定字符的个数是一项基础任务,它涉及到字符串处理和循环控制等基础知识。在这个场景中,我们使用汇编语言来实现这个功能。汇编语言是一种低级编程语言,它直接对应于机器指令,具有...

    统计字符串中数字的个数

    本实验的主要目的是设计并实现一个程序,用于统计一个特定字符串中所有数字的出现次数,并按照数字从小到大的顺序输出这些数字及其出现次数。 #### 输入格式 - **Input**:输入只有一行,即一个包含各种字符(包括...

    VBA示例函数之 求人不如自已动手 统计数组中非重复数据个数

    3. **遍历数组并统计非重复数据**:遍历originalArray中的每一个元素,如果该元素不在uniqueSet中,将其添加到uniqueSet,并增加非重复数据的计数器。 ```vba Dim i As Long For i = LBound(originalArray) To ...

    Java中高效的判断数组中某个元素是否存在详解

    在Java编程中,判断一个无序数组是否包含特定元素是一项常见的任务。这篇文章主要探讨了四种不同的方法来实现这个功能,并分析了它们的时间复杂度。以下是这四种方法的详细解释: 1. 使用`List.contains()`: 这种...

    汇编统计字符串数字及字符个数

    可以使用`DB`(定义字节)伪指令来创建一个长度为50的字符数组来存储字符串。例如: ``` STRING DB 50 dup(0) ; 初始化一个长度为50的字符串数组,所有元素初始化为0 ``` 在实际应用中,字符串的每个字符会替换...

    js根据需要计算数组中重复出现某个元素的个数

    具体的实现方法可以使用传统的for循环,也可以采用现代JavaScript中的数组方法,比如reduce函数,这是一个对数组中的每个元素执行一个由您提供的“reducer”函数(升序执行),将其结果汇总为单个返回值的方法。...

    JS实现数组去重,显示重复元素及个数的方法示例

    通过去重,我们可以得到一个只包含唯一值的数组,并可同时统计出原数组中每个元素的重复次数。此外,借助现代JavaScript提供的新特性和在线工具,可以更高效地完成数组去重等操作,并辅助于测试和调试代码。

    求布尔为真的个数.rar_equation_labview_labview布尔数组_valleypa4

    equation_labview_labview布尔数组_valleypa4”揭示了这个项目的核心内容,即使用LabVIEW(Laboratory Virtual Instrument Engineering Workbench)编程来计算一个布尔数组中“真”(True)的个数。LabVIEW是一款由...

    POINTERS ON C 第九章编程练习11统计某个单词出现的个数

    在本编程练习中,我们将探讨如何使用C语言来统计一个特定单词在文本文件中出现的次数。这个任务涉及到了文件操作、字符串处理以及指针的使用,这些都是C语言中的核心概念。下面,我们将深入讲解这些知识点。 首先,...

    一维数组存储线段树要开多大的数组?

    线段树通常用一个一维数组来表示,数组的每个节点对应一个区间,用于存储该区间的某个属性(如最大值、最小值、和等)。线段树的构建通常需要数组的大小是2^n - 1,其中n是能够完全覆盖问题范围的最小的2的幂次。这...

    PHP获取数组长度或某个值出现次数的方法

    这个函数用于统计数组中每个特定值出现的次数,并返回一个新的数组,其中的键是原始数组中的值,值是这些值在原始数组中出现的次数。例如: ```php $array = array(4, 5, 1, 2, 3, 1, 2, 1); $ac = array_count_...

    java统计文件中每个字符出现的个数

    下面是一个使用 TreeMap 实现文件中每个字符出现的个数统计的示例代码: ```java package com.zhu.io; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io....

    Numpy数组中数据的抽取

    - **统计True的个数**:`numpy.count_nonzero`函数计算布尔数组中`True`的个数,例如`np.count_nonzero(array_1 )`将返回数组`array_1`中小于5的元素个数。 - **使用`numpy.sum`**:由于`False`在Python中相当于0...

    给定一个数列,用快速排序算法把它排成升序

    1. **选择基准值**:从序列中挑选一个元素作为“基准”。 2. **分区操作**:重新排列数组,所有小于基准的元素放在基准前面,所有大于基准的元素放在基准后面。这个过程称为分区操作。 3. **递归调用**:递归地对...

    数组与指针

    在C语言中声明一个数组时,需要指定数组的类型和数组中元素的个数。例如,声明一个整型数组的格式是"int 数组名[元素个数]"。 在对象数组中,数组的每个元素都是一个对象,这意味着每个数组元素都属于某个类。在...

Global site tag (gtag.js) - Google Analytics