Forwarded from dnaugsuz
pry -r ./Projects/psort.rb
ary = OrderedArray.new [1, 9, 3, 4, 2, 10, -1]
ary.pin(6, 0)
ary.csort()
Forwarded from dnaugsuz
我感觉还是不够,还缺少什么,实际上 pin 方法里我用 delete_at 了,又行不通,会导致索引错位...
Forwarded from dnaugsuz
不会啊?
b ; fixed 0
a
c
d
然后插入
b ; fixed 0
a
d ; fixed 2
c
a 的优先级依然比 c 高,我是这个意思
可以理解为一个高级版的 pin,原先那个 pin 专门设立了一个“特殊归类”来自动排序并把结果加到实际渲染的列表里
这个就是 pin + 位置而已
b ; fixed 0
a
c
d
然后插入
b ; fixed 0
a
d ; fixed 2
c
a 的优先级依然比 c 高,我是这个意思
可以理解为一个高级版的 pin,原先那个 pin 专门设立了一个“特殊归类”来自动排序并把结果加到实际渲染的列表里
这个就是 pin + 位置而已
Forwarded from dnaugsuz
https://t.iss.one/purewriter/35208
https://t.iss.one/purewriter/35223
感觉 drakeet 没有意识到可以这么做的原因是他站的层次太高了,他没有意识到最终交给视图渲染的列表本身可以是无序列表(列表当然是有序的,但是可以分无序列表和有序列表)
他只关注有什么「库提供的」排序算法参考的标准(比如优先级),所以他认为排序必须要有优先级才行,而没有意识到排序本身只是算法进行的操作而已,即使让算法随便乱排序又如何?
https://t.iss.one/purewriter/35223
感觉 drakeet 没有意识到可以这么做的原因是他站的层次太高了,他没有意识到最终交给视图渲染的列表本身可以是无序列表(列表当然是有序的,但是可以分无序列表和有序列表)
他只关注有什么「库提供的」排序算法参考的标准(比如优先级),所以他认为排序必须要有优先级才行,而没有意识到排序本身只是算法进行的操作而已,即使让算法随便乱排序又如何?
Telegram
drakeet in PureWriter's Friends
就是提供一个菜单让用户选择是否手动排序,如果勾选,则按照所有已有排序,给文章全部标上优先级
Forwarded from dnaugsuz
始终没有理解我的意思,我的意思是让他先把结果列表里固定好「固定位置」的项目
然后再对剩下的位置选择排序
然后再对剩下的位置选择排序
Forwarded from dnaugsuz
go 里面实现 Sorter 要三个方法:Len、Swap、Less,我觉得 drakeet 还需要学习一下这类知识,比如学习 C++
其实真正需要的只有一个方法:比较相邻项目大小的方法 cmp,在 Ruby 里叫
其实真正需要的只有一个方法:比较相邻项目大小的方法 cmp,在 Ruby 里叫
<=> 也被称为 'spaceship'(1..10).sort { |a, b| b <=> a } #=> [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]Forwarded from dnaugsuz
如果一定要基于优先级还可以尝试映射列表,然后让排序算法去排序映射过的列表
创建一个新列表,0 代表第一个没有固定的位置、1 代表第二个,以此类推
把它送去排序,然后再拿回来修改列表就可以获得目标已排序列表了
[9, 1, 2, 5, 3, 4] 中 9 和 5 被固定了
创建一个新列表,0 代表第一个没有固定的位置、1 代表第二个,以此类推
把它送去排序,然后再拿回来修改列表就可以获得目标已排序列表了
duangsues.is_a? SaltedFish
tips 其实我觉得光允许用户修改优先级也不错,毕竟列表也不总在增加或删除项目
有时感觉所谓完全固定位置不过也是优先级排列… 因为要容错啊
Forwarded from Drakeet
5 没有被手动排序过,5 排在 1 前面,4 被手动排序过,4 也在 1 前面,但 5 和 4 却无法得出谁在谁前
Drakeet
5 没有被手动排序过,5 排在 1 前面,4 被手动排序过,4 也在 1 前面,但 5 和 4 却无法得出谁在谁前
后来我才知道其实他是这么想的,
他根本没有看到我说的 “对于剩下的位置”
他是对于顺序,我是对于位置,一个是基于数学的逻辑一个是基于选择排序算法的逻辑…
他根本没有看到我说的 “对于剩下的位置”
他是对于顺序,我是对于位置,一个是基于数学的逻辑一个是基于选择排序算法的逻辑…
我当时说 4 应该排第一
他想 5 应该排在 1 前面
4 也在 1 前面
我的意思是 4 被固定了,因为剩下的 5 最大,所以 5 排第二
而他可能没有注意到这个
他想 5 应该排在 1 前面
4 也在 1 前面
我的意思是 4 被固定了,因为剩下的 5 最大,所以 5 排第二
而他可能没有注意到这个