数据检索问题
有两个数组DataA[100]和DataB[200]
结构,都有成员,char name[4];int data
已知A和B有些纪录的成员名字,是一样的
现希望把DataB[200]中的纪录排序,
把和DataA中name相同的纪录,排到DataB的前部
然后,返回int n = name相同的纪录数
请问,怎么样用最简洁的程序实现
问题点数:94、回复次数:10Top
1 楼phyllis(phyllis)回复于 2001-12-10 17:03:27 得分 0
请教Top
2 楼phyllis(phyllis)回复于 2001-12-10 17:19:53 得分 0
各位大虾,是不是难啊?Top
3 楼zzh()回复于 2001-12-10 17:34:38 得分 0
自己写一个排序的程序。没有现成的程序,反正数据都在内存当中,应该很快。使用快速排序算法就可以了。Top
4 楼phyllis(phyllis)回复于 2001-12-10 17:38:20 得分 0
用快速排序???
我是想把DataB中
和DataA中name相同的纪录
排在DataB的前部啊
不是想比大小啊
大虾,请教啊Top
5 楼phyllis(phyllis)回复于 2001-12-10 17:57:05 得分 0
难道没有高手?Top
6 楼sunyuzhe114(阿哲)回复于 2001-12-10 18:29:38 得分 0
http://www.csdn.net/expert/topic/411/411075.shtm
代码有13000行的超cool表格程序,如何开发成activeX控件,有兴趣的人留下email,我把源程序发给你们
分数为150分
十万火级,如能给出答案,再送300分
有兴趣的人留下email
我把程序发给你们。
一个很cool的表格程序,请问如何改为activeX控件,有兴趣的我把源代码发给你们,感兴趣的人留下email,
是vc写的非常cool
Top
7 楼lizmei001(暗黑)回复于 2001-12-10 18:47:43 得分 94
你是要怎么排啊?
A中所有的NAME都要排到吗?
要不就慢慢来排就行了
int k=MAX(b);
int m= MAX(a);
for (int i=0;*(b + i)&&i<k&&k>=0; i++)
{for(int j=0;*(a + j);j++)
if (b[i].name == a[j].name) break;
if(j>m) {p=b[k];b[k]=b[i];b[i]=p;k--}
}
k,m为二个数组的现有的最大容量
Top
8 楼lizmei001(暗黑)回复于 2001-12-10 18:49:53 得分 0
老兄,忘记了一句话
在k--;后面加上i--Top
9 楼lizmei001(暗黑)回复于 2001-12-10 18:50:46 得分 0
唉,又忘记了
return MAX(b) - kTop
10 楼phyllis(phyllis)回复于 2001-12-10 20:55:19 得分 0
我是这样写的
int nStart=0;
for(int i = 0;i<200;i++){
for(int h = 0 ;h<100;h++){
if(b[i].name == a[h].name){
Temp=b[i];
b[i]=b[nRpsTempStart];
b[nRpsTempStart]=Temp;
nStart ++;
break;
}
}
}Top




