严蔚敏数据结构习题集10.42 序列的“中值记录”指的是:如果将此序列排序后,它是第┌n/2┐个记录。试写一个求中值记录的算法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了严蔚敏数据结构习题集10.42 序列的“中值记录”指的是:如果将此序列排序后,它是第┌n/2┐个记录。试写一个求中值记录的算法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1483字,纯文字阅读大概需要3分钟。
内容图文
![严蔚敏数据结构习题集10.42 序列的“中值记录”指的是:如果将此序列排序后,它是第┌n/2┐个记录。试写一个求中值记录的算法](/upload/InfoBanner/zyjiaocheng/605/166ec13ae575466ba2b92c6405a5b6f0.jpg)
头文件base.h中存储结构的定义,和严书中一致
#ifndef BASE_H
#define BASE_H
#define MAXSIZE 100
#define EQ(a,b) ((a)==(b))
#define LT(a,b) ((a)<(b))
#define LQ(a,b) ((a)<=(b))
#define GT(a,b) ((a)>(b))
typedef struct
{
KeyType key; //关键字
InfoType otherinfo; //其他数据
}RedType; //记录类型
typedef struct
{
RedType r[MAXSIZE-1]; //r[0] 用作哨兵
int length; //顺序表长度
}SqList;
void Input(RedType &c) //输入数据
{
scanf("%d%d",&c.key,&c.otherinfo);
}
#endif
主文件test.cpp中的内容,这里定义了一个新的结构SLNode,函数zhongzhi为求中值记录的算法
#include<iostream>
#include<cstdio>
#include<cmath>
typedef int KeyType;
typedef int InfoType;
#include"base.h"
using namespace std;
typedef struct
{
int low;
int high;
}SLNode;
RedType zhongzhi(SqList L)
{
if(L.length==0) exit(0);
if(L.length==1) return L.r[1];
int i,j,k;
SLNode sign[L.length+1];
for(i=1;i<=L.length;i++)
{
sign[i].low=0;
sign[i].high=0;
}
for(i=1;i<=L.length-1;i++)
for(j=i+1;j<=L.length;j++)
{
if(GT(L.r[i].key,L.r[j].key)) //>
{
sign[i].high++;
sign[j].low++;
}
if(LQ(L.r[i].key,L.r[j].key)) //<=
{
sign[i].low++;
sign[j].high++;
}
}
for(i=1;i<=L.length;i++)
{
k=abs(sign[i].high-sign[i].low);
if(k==0||k==1)
return L.r[i];
}
}
int main()
{
SqList m;
int i;
scanf("%d", &m.length);
for(i=1; i<=m.length; i++)
Input(m.r[i]);
RedType ans;
ans=zhongzhi(m);
cout<<"\n中值为:"<<"(key:"<<ans.key<<" info:"<<ans.otherinfo<<")"<<endl;
return 0;
}
/* 测试数据
10
1 1
2 2
1 3
2 4
2 5
1 6
3 7
3 8
3 9
4 10
*/
如果这个有错误大家一定要提出来呀,这个习题集我做的也是很自闭啊!!!
内容总结
以上是互联网集市为您收集整理的严蔚敏数据结构习题集10.42 序列的“中值记录”指的是:如果将此序列排序后,它是第┌n/2┐个记录。试写一个求中值记录的算法全部内容,希望文章能够帮你解决严蔚敏数据结构习题集10.42 序列的“中值记录”指的是:如果将此序列排序后,它是第┌n/2┐个记录。试写一个求中值记录的算法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。