# 拖拉排序邏輯 ## 一般情況的情境描述 假設本來有10個 items,依序排列如下。 | `id`<sub>PK</sub> | `label`<sub>UNIQUE</sub> | `ordinal`<sub>UNIQUE</sub> | | ----------------- | ------------------------ | -------------------------- | | 1 | 甲 | 1 | | 2 | 乙 | 2 | | 3 | 丙 | 3 | | 4 | 丁 | 4 | | 5 | 戊 | 5 | | 6 | 己 | 6 | | 7 | 庚 | 7 | | 8 | 辛 | 8 | | 9 | 壬 | 9 | | 10 | 癸 | 10 | ### 情境一:把丙移到庚、辛之間 1. 將丙的`ordinal`設為`-1`。 2. `3 < ordinal < 8` 的 `ordinal` -1 3. 將丙存入 `ordinal` 存至 `ordinal = 7` ## 在有`parent`<sub>上一層</sub>的情形下 | parent | ordinal | | ------ | ------- | | 1 | 1 | | 1 | 2 | | 1 | 3 | | 1 | 4 | | 1 | 5 | | 2 | 1 | | 2 | 2 | | 2 | 3 | | 2 | 4 | | 2 | 5 | | 3 | 1 | | 3 | 2 | | 3 | 3 | | 3 | 4 | | 3 | 5 | * 底下例子 parent=1 ord=1 用1-1表示 ## parent 不相等 ex1. 3-3 ->1-3 1. 1-3~1-5 ++ //parent=1 ord>=3 者都+1 2. 3-3->1-3 // 將3-3的值存至1-3 3. 3-4~3-5-- //parent=3 ord>3 者都-1 用變數表示 (orgX,orgY)->(tarX,tarY) 1. 將 parent = tarX 且 tarY >=3 者的 ord 都+1 2. 將 temX = orgX , temY= orgY 3. orgX = tarX , orgY = tar Y 4. 將 parent = temX 且 ord > temY 者的 ord 都-1 ## parent 相等 ex2. 3-3 ->3-1 1. 3-3->3-0 ++ //將3-3的值暫存至3-0 2. 3-1~3-2 ++ //ord<3者+1 3. 3-0->3-1 //將3-0的值存至3-1 ex3. 3-3 ->3-5 1. 3-3->3-0 ++ //將3-3的值暫存至3-0 2. 3-4~3-5 -- //ord>3者-1 3. 3-0->3-5 //將3-0的值存至3-5
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up