Algorithm 通过时间戳和手动方式订购照片 上下文

Algorithm 通过时间戳和手动方式订购照片 上下文,algorithm,workflow,Algorithm,Workflow,我正在开发一个小的网络应用程序来存储照片。照片是根据他们的时间戳和拍摄日期来订购的,效果很好。以下是数据库的简化视图: +--------------+-------------------+ | id | timestamp | +--------------+-------------------+ | 1 | 1000000003 | | 2 | 1000000000 | +----

我正在开发一个小的网络应用程序来存储照片。照片是根据他们的时间戳和拍摄日期来订购的,效果很好。以下是数据库的简化视图:

+--------------+-------------------+
|      id      |     timestamp     |
+--------------+-------------------+
|       1      |    1000000003     |
|       2      |    1000000000     |
+--------------+-------------------+
现在我想添加重新订购照片的可能性。我找不到一个没有任何缺点的方法

我所做的 我首先向表中添加了一列以保存自定义订单

+--------------+-------------------+-------------+
|      id      |     timestamp     |    order    |
+--------------+-------------------+-------------+
|       1      |    1000000003     |      1      |
|       2      |    1000000000     |      2      |
+--------------+-------------------+-------------+
第一个问题:我认为我不能根据两个不同的标准来订购照片,因为很难知道哪一个必须优先

所以我用订单列对它们进行排序,只有这一列。当我添加order列时,我给每张照片指定了一个值,以便当前的订单保持不变。我现在有按顺序订购的照片,与按时间戳订购的顺序相同

我现在可以手动重新订购一些照片,其他照片将留在它们所属的地方。第一个问题已经解决

但是现在,我想添加一张新照片

第二个问题:我知道我添加的新照片是什么时候拍摄的,但我的照片不再按时间戳排序。此照片需要正确排序,因此需要正确的排序值

这就是问题所在:正确的订单值

以下是我处理新照片的两种方法:

给它一个大于其他订单的订单值。在上一个表中,新照片的顺序为3。这显然是个坏主意,因为它没有考虑时间戳。最近的照片仍将是最后一张显示的照片。 根据时间戳,将其插入其所属位置。查看同一个表,如果新照片的时间戳为1000000002,则新照片的顺序将为2,后续每张照片的顺序将增加1。 第二种解决方案看起来不错,但有一种情况除外:如果照片2的顺序被手动更改为50,那么新照片的顺序将为=50,即使根据时间戳,它属于第一张照片

我需要什么 我需要的是一种根据照片的时间戳和手动设置的顺序排序照片的方法


也许你对我强调的第二个问题有一个解决方案,或者你知道一个完全不同的方法来处理这个问题。不管怎样,谢谢你的帮助。

你的问题中没有提到计算机或编程语言。事实上,这是一个很好的方法,在编码之前把问题和解决方案写在纸上,这里的答案也忽略了计算机和编程语言

把你所有的照片按你拿到的顺序放进鞋盒里

现在,拿三张纸:

在第1页,将数字1写在盒子可以容纳的照片数量的1到N之间。每当你把一张照片放进盒子里,把它的时间戳写在盒子里它的顺序对应的行上

在第2页,将照片1的时间戳写下来几行。在同一行上写一个1。对于下一张照片,将其时间戳写在纸上的适当位置,在上面和下面留出尽可能多的空间,以便将来插入照片。在同一行上写一个2。在需要将所有信息复制到具有更多插入空间的页面的新版本时,请继续,直到行间空间不足为止。此页上的信息与第1页上的信息相同,但每行上有两个数字交换位置

在第3页上,再次写出从1到N的数字。当您收集每张照片时,将其编号从第1页(即其编号按所有照片编号的顺序)写入正确的位置,以便手动设置顺序。你可能需要在这一页上进行大量的删改和重写,因为你决定应该将迟到者高高地插入这一页

现在你有:

你的照片商店,鞋盒;你应该已经意识到你不能一次存储多张照片; 三个指数,如果你喜欢;第一个是固定的,只是给每张照片分配一个唯一的序列号;它还告诉你盒子里每张照片的时间戳; 第二个索引使您能够找到给定时间戳的照片的唯一序列号,然后在鞋盒中查找照片; 第三个索引允许您根据需要订购照片;每行上的第一个数字是排序顺序中的序列号,第二个数字是第一个索引中照片的唯一序列号。
所有这些都是一种非常冗长的方式告诉你,因为你不能在鞋盒或计算机化数据存储中同时保存多个订单中的照片,你必须为你想要使用的订单维护索引。这些索引指出了索引从数字到鞋盒中某个位置直接或间接的作用。

您刚刚将问题本身总结为 只有470个字。我想这正是我所需要的,我最终根据他们的时间戳对每件事进行了排序——仅此而已。