阿里15实习生招聘笔试 字符保序输出问题
来源:互联网 发布:淘宝网站的目标客户是 编辑:程序博客网 时间:2024/04/28 11:49
题目:
分布式系统中的RPC请求经常出现乱序的情况。
写一个算法来将一个乱序的序列保序输出。例如,假设起始序号是1,对于(1, 2, 5, 8, 10, 4, 3, 6, 9, 7)这个序列,输出是:
1
2
3, 4, 5
6
7, 8, 9, 10
上述例子中,3到来的时候会发现4,5已经在了。因此将已经满足顺序的整个序列(3, 4, 5)输出为一行。
要求:
1. 写一个高效的算法完成上述功能,实现要尽可能的健壮、易于维护
2. 为该算法设计并实现单元测试
#include<iostream>
#include<vector>
using namespace std;
class Queue
{
public:
int val;
int num;
Queue()
{
num = 0;
val = 0;
}
};
int main()
{
vector<Queue> queue;
int temp,num=0;
do //接收输入,作为无序序列
{
cin >> temp;
Queue * p = new Queue;
p->val = temp;
p->num = ++num;
queue.push_back(*p);
if (cin.get() == '\n')
break;
} while (1);
vector<Queue> cpy; //拷贝一份
for (auto i : queue)
cpy.push_back(i);
for (auto begin = cpy.begin(), end = cpy.end(); begin != end;--end) //冒泡排序
{
for (auto it = begin; it != (end-1); ++it)
{
if (it->val > (it + 1)->val)
{
Queue * p = new Queue;
p->num = it->num;
p->val = it->val;
it->num = (it + 1)->num;
it->val = (it + 1)->val;
(it + 1)->num = p->num;
(it + 1)->val = p->val;
}
}
}
temp = 1;
for (auto i : cpy) //保序输出
{
if (i.num <= temp) //若当前数字编号小于输出的最大编号,则直接输出不需换行
cout << i.val << " ";
else //否则当前编号成为最大编号,并且换行
{
temp = i.num;
cout << endl;
cout << i.val << " ";
}
}
}
- 阿里15实习生招聘笔试 字符保序输出问题
- 阿里实习生招聘笔试题目
- 阿里实习生招聘笔试题目
- 20130505阿里实习生招聘笔试题
- 转载--阿里实习生招聘笔试题目
- 2014阿里暑假实习生招聘笔试题
- 阿里 2016届实习生招聘笔试
- 2016阿里安全工程师实习生招聘笔试题
- 阿里笔试题,乱序序列的保序输出。
- 2014-03-29.阿里实习生招聘笔试题目
- 2014年阿里武汉实习生招聘笔试题
- 2014-03-29.阿里实习生招聘笔试题目
- 2014-03-29.阿里实习生招聘笔试题目
- 2014-03-29.阿里实习生招聘笔试题目
- 2014-03-29.阿里实习生招聘笔试题目
- [置顶] 2014-03-29.阿里实习生招聘笔试题目
- 工作面试---2014-03-29.阿里实习生招聘笔试题目
- 2014-03-29.阿里实习生招聘笔试题目
- P51 第14题
- Vs2010中写unrealScript脚本插件
- 字符串与日期类型转换的工具类
- Mac系统的JDK8默认安装路径
- goldengate 单个表通过函数对replicate进程拆分(进程拆分系列之二)
- 阿里15实习生招聘笔试 字符保序输出问题
- Mysql数据库读写分离数据同步
- Lucene使用SortField对多个字段进行排序
- Android中屏幕密度和图片大小的关系分析
- LKT-L12 双界面读卡器
- NxOgre 笔记
- Eclipse生成中文版javadoc
- 高效的jQuery代码编写技巧总结
- (转载)采用opencv_cascadetrain进行训练的步骤及注意事项