永发信息网

求教数据结构的算法(30分求)

答案:2  悬赏:40  手机版
解决时间 2021-01-18 00:38
求教数据结构的算法(30分求)
最佳答案
void compositor(SqList &list) //排序,采用选择排序
{
student tmp;
for(int i = list.length; i >= 0; i--)
{
int maxpos = i - 1;
for(int j = 0; j < i - 1; j++)
{
if (list.r[j].age > list.r[maxpos].age)
{
maxpos = j;
}
}

tmp = list.r[maxpos];
list.r[maxpos] = list.r[i - 1];
list.r[i - 1] = tmp;
}
}

bool Find(SqList &list, student std,int low ,int high);

int dichotomy(SqList &list, student std)//二分法查找
{
int high,low;
high = list.length - 1;
low = 0;
return Find(list, std, low ,high);
}

int Find(SqList &list, student std,int low ,int high)
{
int mid = (low + high) / 2;
if (low > high)
return -1;
if (list.r[mid].age == std.age)
{
if (strcmp(list.r[mid].name,std.name) == 0) //比较名字,若相等返回
{
return mid;
} else { //名字不相等,可能存在其他同龄人,继续查找
int nReturn = -1;
if ((nReturn = Find(list, std, low ,mid - 1)) != -1)
return nReturn;
else
{
return Find(list, std, mid + 1, high) != -1) ;
}
}
} else if (list.r[mid].age > std.age) {
return Find(list, std, low ,mid - 1);
} else {
return Find(list, std, mid + 1,high);
}
}追问这位高人首先很感谢你能够解答问题,万分感谢,有一些问题就是说,选择排序中的r[maxpos],里的maxpos是需要另外定义的数量长度的是吧?还有一个就是第二个二分查找中能够体现递减的核心语句在哪。。。谢谢了追答不好意思,问题没看太清楚:
1. maxpos不用再定义,只是个中间标识,用于标识当前趟选择到的最大值的位置,然后放置到最后当前序列的最后即可,符合选择排序递增的要素。
2. 递减的情况,修改一下即可:
将语句中的大于号改为小于号即可,如:if (list.r[mid].age < std.age)
具体代码如下所示:
int Find(SqList &list, student std,int low ,int high)
{
int mid = (low + high) / 2;
if (low > high)
return -1;
if (list.r[mid].age == std.age)
{
if (strcmp(list.r[mid].name,std.name) == 0) //比较名字,若相等返回
{
return mid;
} else { //名字不相等,可能存在其他同龄人,继续查找
int nReturn = -1;
if ((nReturn = Find(list, std, low ,mid - 1)) != -1)
return nReturn;
else
{
return Find(list, std, mid + 1, high) != -1) ;
}
}
} else if (list.r[mid].age < std.age) {
return Find(list, std, low ,mid - 1);
} else {
return Find(list, std, mid + 1,high);
}
}
全部回答
题目很简单。。。现在没时间,还是帮顶一下吧!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
天火大道赫拉被谁杀了
我要购的网站功能
手机拍照衣服怎样拍好看了
三河市到洛阳怎么坐车
c语言编写索引数组
凯利和贸易(深圳)有限公司怎么样?
怎么用手扯断尼龙丝带
我问开店李三公,重客来此店中,一房七客多七
M 等于2004乘2005减1 n等于2004的平方减去200
肚子上的肉很松池!请问怎么办谢谢了,大神帮
请问股票软件里出现一个新债申购是什么意思啊
一本发生在银州的官场小说,主角叫方志成
求各位有经验的大侠为后生小弟指点电子设计助
从化珠光流溪御景洋房6楼以上可以看到流溪河
做军屯锅盔会用泡打粉吗?
推荐资讯
池塘有大鲫鱼和鲤鱼为什么不吃食? 钓到的都是
丁丁弯了可以弄直吗?
单选题下列说法中不正确的选项是()。A.《窦
桂枝白虎汤组成和煎法?
0.57735027等于sin多少度?
以水浒英雄为背景玄幻小说
引进高层次人才存在哪些困难和问题
第一次去温泉洗浴 需要带什么 泳衣是他提供还
重庆到丰都先路过丰都还是先过涪陵
小龙村地址在哪,我要去那里办事
厦大 西财的 金融研究生 哪个比较好考
手机上网50MB一个月够用吗?我是联通的。
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?