分布式系统中的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. 为该算法设计并实现单元测试基本思想是将每一行存入一个链表结点,data表示起始数据,len表示每行元素个数。貌似效率不是很高,有时间的时候改进下
1.void solve(vector<int> &data)
{
int start = 1;
int len = data.size();
int i = 0;
int k;
vector<int>::iterator it;
vector<int>::iterator be = data.begin();
while (i < len)
{
if (data[i] == start)
{
k = data[i];
cout << setw(5) << k;
it = be + i;
while (1){
k++;
if (fin

在分布式系统中,RPC请求时常遇到乱序问题。本文提出了一种算法,用于将乱序序列保序输出,例如将序列(1, 2, 5, 8, 10, 4, 3, 6, 9, 7)转换为有序输出。当3到来且发现4, 5已在序列中时,会将3, 4, 5作为一个整体输出。算法设计要求高效、健壮和易于维护,当前实现使用链表节点存储每一行数据,包含起始数据和每行元素个数,但仍有优化空间。"
112497324,10537118,群辉NAS配置KODI中文版及电视端安装教程,"['NAS配置', 'KODI安装', '电视播放', '文件共享', '多媒体中心']
最低0.47元/天 解锁文章
1705

被折叠的 条评论
为什么被折叠?



