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

2020-01-25 15:25发布

总共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【】;但是判断上较复杂,求更好的算法,有程序加莫元。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
lcw_swust
1楼-- · 2020-01-25 17:51
地址是连续的吗?不管个数是多少都是从1开始的吗?
那就只需要一个数组tab_data10[]就行了,数组中的序号就对应着ID。
tab_data10[0]就代表ID为1的数据
tab_data10[1]就代表ID为2的数据
...
langbaiyue
2楼-- · 2020-01-25 18:05
lcw_swust 发表于 2013-12-20 15:11
地址是连续的吗?不管个数是多少都是从1开始的吗?
那就只需要一个数组tab_data10[]就行了,数组中的序号就 ...

需要将相同的数据归类,相同数据的ID未必是连续的!
lcw_swust
3楼-- · 2020-01-25 20:33
本帖最后由 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)
langbaiyue
4楼-- · 2020-01-25 23:02
lcw_swust 发表于 2013-12-20 16:27
哦,这样啊。
看这样行不:
定义一个结构体:

感谢!先看一下可行性!
mikal
5楼-- · 2020-01-26 03:14
最常规的方法,二分法排序数据组,然后for循环ID数,搞定!

如果要更简便的,我还没有想到,今晚想想,看是否存在更简单的方法!
langbaiyue
6楼-- · 2020-01-26 08:38
 精彩回答 2  元偷偷看……

一周热门 更多>