duangsues.is_a? SaltedFish
60 subscribers
609 photos
6 videos
91 files
562 links
🌶🐔🐟 duangsuse 的日常
尤其喜欢发些奇奇怪怪的东西
和转载别人的东西
Download Telegram
Forwarded from dnaugsuz
学 GeekApk pin 不行
Forwarded from dnaugsuz
固定位置然后把空缺的位置再排序不行吗...
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
This media is not supported in your browser
VIEW IN TELEGRAM
Forwarded from dnaugsuz
但我是这个意思..,
Forwarded from dnaugsuz
不会啊?
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 没有意识到可以这么做的原因是他站的层次太高了,他没有意识到最终交给视图渲染的列表本身可以是无序列表(列表当然是有序的,但是可以分无序列表和有序列表)
他只关注有什么「库提供的」排序算法参考的标准(比如优先级),所以他认为排序必须要有优先级才行,而没有意识到排序本身只是算法进行的操作而已,即使让算法随便乱排序又如何?
Forwarded from dnaugsuz
始终没有理解我的意思,我的意思是让他先把结果列表里固定好「固定位置」的项目
然后再对剩下的位置选择排序
Forwarded from dnaugsuz
而他只关心优先级.... 当然很麻烦
Forwarded from dnaugsuz
go 里面实现 Sorter 要三个方法:Len、Swap、Less,我觉得 drakeet 还需要学习一下这类知识,比如学习 C++
其实真正需要的只有一个方法:比较相邻项目大小的方法 cmp,在 Ruby 里叫 <=> 也被称为 'spaceship'

(1..10).sort { |a, b| b <=> a }  #=> [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
Forwarded from dnaugsuz
选择排序当然不是「比较相邻项目」,不过快速排序好像是
Forwarded from dnaugsuz
如果一定要基于优先级还可以尝试映射列表,然后让排序算法去排序映射过的列表

[9, 1, 2, 5, 3, 4] 中 9 和 5 被固定了


创建一个新列表,0 代表第一个没有固定的位置、1 代表第二个,以此类推
把它送去排序,然后再拿回来修改列表就可以获得目标已排序列表了
可是 drakeet 老想着「边自动边手动」...
dnaugsuz
psort.rb
实际上真个实现都没有真正 works,只不过能凑合着用罢了
准确的说不叫 cmp… 实际上根本不是,比大小 lt 就可以,<=> 是求距离…
Forwarded from Drakeet
5 没有被手动排序过,5 排在 1 前面,4 被手动排序过,4 也在 1 前面,但 5 和 4 却无法得出谁在谁前
Forwarded from Drakeet
就是我我们要的是那样的结果,但你找不到一个逻辑能够让程序去实现