Algorithm 使用缓冲区对串行数据进行排序

Algorithm 使用缓冲区对串行数据进行排序,algorithm,sorting,serial-port,buffer,Algorithm,Sorting,Serial Port,Buffer,是否有算法使用小于数据长度的缓冲区对串行输入的数据进行排序 例如,我有100字节的串行数据(只能读取一次)和40字节的缓冲区。我需要打印出排序的字节 我需要Javascript,但任何一般性的想法都很好。这种排序不可能一次完成 使用您的示例:假设您已经填充了40字节的缓冲区,那么您需要开始打印字节,以便为下一个字节腾出空间。要打印出已排序的数据,必须先打印最小的字节。然而,如果最小的字节还没有被读取,你可能还不能打印出来 与您的问题最相关的可能是算法,它通过多次传递来对无法放入内存的数据进行排序

是否有算法使用小于数据长度的缓冲区对串行输入的数据进行排序

例如,我有100字节的串行数据(只能读取一次)和40字节的缓冲区。我需要打印出排序的字节


我需要Javascript,但任何一般性的想法都很好。

这种排序不可能一次完成

使用您的示例:假设您已经填充了40字节的缓冲区,那么您需要开始打印字节,以便为下一个字节腾出空间。要打印出已排序的数据,必须先打印最小的字节。然而,如果最小的字节还没有被读取,你可能还不能打印出来

与您的问题最相关的可能是算法,它通过多次传递来对无法放入内存的数据进行排序。也就是说,如果您的外围设备可以存储处理过程的输出,那么您可以在O(log(N/M))过程中对大于内存的数据进行排序,其中N是问题的大小,M是内存的大小


用于外部分拣的经典存储外围设备是磁带机;然而,同样的算法适用于磁盘驱动器(无论是哪种类型)。此外,随着缓存层次结构的深入,外部排序的原则变得更为相关,甚至对于内存中的排序也更为相关——试着看看算法。

这种排序不可能一次完成

使用您的示例:假设您已经填充了40字节的缓冲区,那么您需要开始打印字节,以便为下一个字节腾出空间。要打印出已排序的数据,必须先打印最小的字节。然而,如果最小的字节还没有被读取,你可能还不能打印出来

与您的问题最相关的可能是算法,它通过多次传递来对无法放入内存的数据进行排序。也就是说,如果您的外围设备可以存储处理过程的输出,那么您可以在O(log(N/M))过程中对大于内存的数据进行排序,其中N是问题的大小,M是内存的大小


用于外部分拣的经典存储外围设备是磁带机;然而,同样的算法适用于磁盘驱动器(无论是哪种类型)。此外,随着缓存层次结构的深入,外部排序的原则变得更为相关,甚至对于内存中的排序也更为相关——试着看看算法。

我很确定,除非数据至少在某种程度上被预先排序,否则这是不可能的。如果您接收的最后一个字节应该是输出中的第一个字节,那么您不能在它之前输出任何字节,并且仍然让它首先输出,但是您不能将所有插入的数据保存在小于该数据占用的缓冲区中。你可以尝试压缩数据,但这可能会适得其反,使数据变得更大。我很确定,除非数据至少在某种程度上被预先排序,否则这是不可能的。如果您接收的最后一个字节应该是输出中的第一个字节,那么您不能在它之前输出任何字节,并且仍然让它首先输出,但是您不能将所有插入的数据保存在小于该数据占用的缓冲区中。您可以尝试压缩数据之类的方法,但这可能适得其反,使数据变得更大。