【发布时间】:2017-06-29 20:39:32
【问题描述】:
我有我的初始数组(允许随机或重复),首先需要对其进行排序,然后需要将排序后的数组重新排序为原始数组,并保留顺序。
Ex:
orig_array: char[512] = { 1, 2, 4, 1,3,5,a,b,c,........}
Sorted array: char[512] = { 1, 1, 2,2,3.....) ( using sorting algorithms )
Unsorting back to original order: { 1, 2,4,1,3,......}
我被困在如何将取消排序返回到它们创建的原始顺序的路上。
我为什么要问的一些背景:
对数组进行排序完全在不同的系统上完成。排序后的数组被发送到网络并被主机接收。必须保留原始数据。
我在两端都有一个压缩模块来压缩和解压缩数据。压缩模块是 CPU 昂贵的。我的想法是对排序的数据序列进行压缩不应该消耗太多 CPU,并且应该非常快地在两端加密和解密,从而减少整体延迟
【问题讨论】:
-
对数组的副本进行排序
-
一个有趣的问题。
-
一种有趣的方法是,在排序过程中,跟踪您所做的每个元素移动/交换。然后当你完成后,按照这个过程倒退。 :)
-
变得更有趣了 :) 你想加密网络流量吗?它看起来像一个疯狂的 XY 问题。
-
测量它。压缩速度显着提高的机会很小,除非数据集很小,否则撤消排序的成本会很大。压缩未排序的数据并将其发送,您可以节省排序和取消排序的时间。
标签: c algorithm sorting data-structures