۳ تا مدل معروف برای reorder کردن لیستها وجود داره، مخصوصا جاهایی مثل تسکهای جیرا که مدام drag & drop انجام میشه:
* سادهترین و بدترین حالت اینه که هر آیتم یه عدد ترتیبی داشته باشه (۱،۲،۳،۴...). مشکلش اینه که اگر یه آیتم وسط لیست جابهجا بشه، باید position کلی آیتم بعدش آپدیت بشه که روی دیتاست بزرگ عملاً فاجعهست و complexity میره سمت O(N).
* مدل بهتر اینه که بین اعداد gap بذاری. مثلا به جای ۱،۲،۳ از ۱۰،۲۰،۳۰ استفاده کنی. اینجوری اگر بخوای یه آیتم بین ۲۰ و ۳۰ بذاری، میتونی راحت ۲۵ بدی و اکثر مواقع بدون reorder کار انجام میشه. مشکلش اینه که بعد از مدتی gap ها پر میشن و مجبوری کل sequence رو دوباره rebuild کنی.
* حرفهایترین مدل هم چیزیه که Jira استفاده میکنه؛ یعنی LexoRank. اینجا به جای عدد، از string های sortable استفاده میشه (مثل a ،ab ،acz و …). مزیتش اینه که همیشه میشه بین دو آیتم یه مقدار جدید ساخت بدون اینکه بقیه آیتمها تغییر کنن.
سورس این پست از لینکدین پوریا فرامرزی
@codehalics | کدهالیک
Post #626
590

- ⚡ 5
- 👍 3
- ❤ 2