搜索
bottom↓
回复: 9

请教:随意数值分组并且按需选择

[复制链接]

出0入4汤圆

发表于 2013-12-20 09:47:14 | 显示全部楼层 |阅读模式
总共24个数据,如下:

   ID号:      1      2      3     4    5     6      7     8    9      10    11    12    13    14    15     16    17     18     19     20     21     22    23      24   

    数据 :     10    21    30   21   20   35    10   10   35    21     30    20    21    10    20     30    15     30    20      21    10      35    20      35

ID号对应的是地址, 不可变;   数据对应的是可以输入的任意数值, 现请教一套算法 :  ID和数据必须保持锁定,ID号的数量上可以设定的,比如15个,下面相应的数据也就变成了15个,将相同的数据分成一组,如上面例子,

我的思路是  数据10   送入数组   tab_data10【】,相应的地址送入tab_addr10【】;但是判断上较复杂,求更好的算法,有程序加莫元。

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2013-12-20 15:11:16 | 显示全部楼层
地址是连续的吗?不管个数是多少都是从1开始的吗?
那就只需要一个数组tab_data10[]就行了,数组中的序号就对应着ID。
tab_data10[0]就代表ID为1的数据
tab_data10[1]就代表ID为2的数据
...

出0入4汤圆

 楼主| 发表于 2013-12-20 15:49:41 | 显示全部楼层
lcw_swust 发表于 2013-12-20 15:11
地址是连续的吗?不管个数是多少都是从1开始的吗?
那就只需要一个数组tab_data10[]就行了,数组中的序号就 ...

需要将相同的数据归类,相同数据的ID未必是连续的!

出0入0汤圆

发表于 2013-12-20 16:27:21 | 显示全部楼层
本帖最后由 lcw_swust 于 2013-12-20 16:29 编辑
langbaiyue 发表于 2013-12-20 15:49
需要将相同的数据归类,相同数据的ID未必是连续的!


哦,这样啊。
看这样行不:
定义一个结构体:
第一个字节表示数据
第二个字节表示有相同数据的ID的总数
第三个字节开始就是逐个的ID号(数组)
参考:变长结构体:http://blog.sina.com.cn/s/blog_532f78a40100t9ad.html
只要总的ID号个数固定,那么就只需要定义一个固定长度的数组作为缓冲区,
在缓冲区中建立一个挨着一个的结构体即可。(这样能避免malloc、free)

出0入4汤圆

 楼主| 发表于 2013-12-20 16:39:40 | 显示全部楼层
lcw_swust 发表于 2013-12-20 16:27
哦,这样啊。
看这样行不:
定义一个结构体:

感谢!先看一下可行性!

出0入0汤圆

发表于 2013-12-20 17:32:42 | 显示全部楼层
最常规的方法,二分法排序数据组,然后for循环ID数,搞定!

如果要更简便的,我还没有想到,今晚想想,看是否存在更简单的方法!

出0入4汤圆

 楼主| 发表于 2013-12-21 08:26:49 | 显示全部楼层
mikal 发表于 2013-12-20 17:32
最常规的方法,二分法排序数据组,然后for循环ID数,搞定!

如果要更简便的,我还没有想到,今晚想想,看 ...

惭愧 数学快忘光了 ,昨天把算法改成了FOR循环分类数据和对应地址,正在试!

出0入0汤圆

发表于 2013-12-21 10:19:25 | 显示全部楼层
langbaiyue 发表于 2013-12-21 08:26
惭愧 数学快忘光了 ,昨天把算法改成了FOR循环分类数据和对应地址,正在试! ...

其实,我看了 lcw_swust 的方法,应该比我提出的要好。
首先确定数据结构体,然后for下ID数的次数。这样就直接满足你的要求了。
而我说的二分法+for,估计程序开销要大很多。

当然前期ID存放是连续的,不连续的话,那就把它改成连续的。

出0入0汤圆

发表于 2013-12-21 12:08:53 | 显示全部楼层
看你用啥做,C#的话,自带的数据类不要太好用更不用说还有LINQ~
(顺便,你这是hash表的节奏,跑个哈希算法是最实用的~

出0入4汤圆

 楼主| 发表于 2013-12-23 14:04:18 | 显示全部楼层
lcw_swust 发表于 2013-12-20 16:27
哦,这样啊。
看这样行不:
定义一个结构体:

你好 按照你的思路,没搞定,我试其他的办法,感觉很繁琐,

ID  1  2   3   4   5   6   7    8
值 5  8   2   9   6   5   8     9

不知能不能抽些时间  以上面8组数据 写个范例呢?  

感谢!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 14:15

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表