UltKit

مرتب‌سازی خطوط

هر فهرستی را مرتب کنید: به ترتیب الفبا در هر دو جهت، به ترتیب طبیعی، بر اساس اولین عدد هر خط، بر اساس طول، یا با جابه‌جایی تصادفی. مرتب‌سازی با قواعد زبانی خود مرورگر شما انجام می‌شود و به‌طور کامل روی دستگاه خودتان اجرا می‌شود.

ترتیب

۰ نویسه · ۰ کلمه · ۰ خط

۰ نویسه · ۰ کلمه · ۰ خط

کاملاً در همین زبانه مرورگر اجرا می‌شود. متن شما هرگز بارگذاری یا ذخیره نمی‌شود.

چه کار می‌کند

مرتب‌سازی خطوط خطوط را با ترتیب الفبایی مبتنی بر زبان مرورگر شما، به‌صورت طبیعی (file2 قبل از file10)، بر اساس اولین عدد هر خط، بر اساس طول یا به‌صورت تصادفی مرتب می‌کند.

قبل
item 10
item 9
Item 1
بعد
Item 1
item 9
item 10

ترتیب الفبایی با ترتیب کد نویسه‌ها یکی نیست

ساده‌ترین راه برای مرتب‌سازی متن در رایانه، استفاده از کد نویسه است، اما نتیجه عجیب می‌شود: همهٔ حروف بزرگ (کدهای 65 تا 90 در ASCII) پیش از همهٔ حروف کوچک (97 تا 122) می‌آیند، پس «Zebra» جلوتر از «apple» قرار می‌گیرد و حروف دارای نشانه بعد از z می‌افتند. کاربران ترتیب فرهنگ لغت را انتظار دارند که زبان‌شناسان به آن «تطبیق ترتیبی» (collation) می‌گویند. این ابزار از Intl.Collator استفاده می‌کند، یعنی پیاده‌سازی مرورگر از الگوریتم ترتیب یونیکد، بنابراین «apple»، «Banana» و «éclair» همان‌طور که خواننده انتظار دارد مرتب می‌شوند.

ترتیب الفبایی به زبان هم بستگی دارد. در فرهنگ‌های آلمانی ä کنار a قرار می‌گیرد، اما در سوئدی å، ä و ö بعد از z و در انتهای الفبا می‌آیند. ابزار از زبان پیش‌فرض مرورگر شما استفاده می‌کند، پس فهرستی که روی یک سامانهٔ سوئدی مرتب شود از قواعد سوئدی پیروی می‌کند. وقتی نادیده گرفتن حروف بزرگ و کوچک روشن باشد، حروفی که فقط در بزرگی یا نشانه فرق دارند برابر محسوب می‌شوند و بر پایهٔ تفاوت بعدی مرتب می‌شوند.

ترتیب طبیعی، عددی و بر اساس طول

ترتیب الفبایی رقم‌ها را یکی‌یکی مقایسه می‌کند، پس «file10» پیش از «file2» می‌آید چون 1 از 2 کوچک‌تر است. ترتیب طبیعی دنباله‌های رقمی را عدد کامل می‌خواند و file1، file2، file10 را می‌دهد، همان‌طور که مدیران فایل مانند Windows Explorer و Finder در macOS نام‌ها را نشان می‌دهند. برای عنوان فصل‌ها، فهرست نسخه‌ها، شمارهٔ فاکتورها و نام عکس‌هایی مثل IMG_9 و IMG_10 از آن استفاده کنید.

ترتیب عددی اولین عدد هر خط را، با علامت منفی و اعشار، پیدا می‌کند و بر اساس مقدار آن مرتب می‌کند؛ مناسب فهرست قیمت، امتیازها و خط‌هایی مثل «12 apples». خط‌های بدون عدد به انتها می‌روند. ترتیب مدت بر اساس تعداد نویسه‌های قابل‌مشاهده است، از کوتاه‌ترین، و در حالت برابری الفبایی مرتب می‌شود؛ برای یافتن کوتاه‌ترین نام دامنه یا تشخیص موارد ناقص مفید است.

جابه‌جایی تصادفی چگونه کار می‌کند

درهم‌ریزی از الگوریتم فیشر–یتس استفاده می‌کند (که رونالد فیشر و فرانک یتس در 1938 منتشر کردند و ریچارد دورستنفلد در 1964 برای رایانه اقتباس کرد). این الگوریتم فهرست را از انتها پیمایش می‌کند و هر خط را با یک خط تصادفی از خودش یا پیش از آن جابه‌جا می‌کند. با منبع تصادفی خوب، همهٔ ترتیب‌ها احتمال برابر دارند. اعداد تصادفی از mulberry32 می‌آیند، یک مولد شبه‌تصادفی کوچک با دانه، پس درهم‌ریزی تا زمانی که درخواست جدید ندهید ثابت می‌ماند. چون وضعیت آن 32 بیت است، حداکثر حدود 4.3 میلیارد درهم‌ریزی متفاوت می‌سازد، کمتر از 6.2 میلیارد ترتیب ممکن برای فقط 13 خط. این برای سؤال‌های مسابقه، فهرست پخش و تعیین ترتیب ارائه کافی است، اما برای قرعه‌کشی یا هر چیزی که پول یا امنیت در آن مطرح است مناسب نیست.

برای پاک‌سازی فهرست پیش از مرتب‌سازی، ابتدا آن را با حذف خط‌های تکراری بررسی کنید.

پرسش‌های متداول

چرا file10 پیش از file2 قرار می‌گیرد؟
ترتیب الفبایی ساده نویسه به نویسه مقایسه می‌کند و 1 پیش از 2 می‌آید. ترتیب طبیعی را انتخاب کنید که هر دنبالهٔ رقمی را عدد در نظر می‌گیرد تا file2 پیش از file10 قرار گیرد.
آیا مرتب‌سازی واژه‌های با حروف بزرگ را اول می‌آورد؟
خیر. مرتب‌سازی بر پایهٔ ترتیب آگاه از زبان انجام می‌شود، پس apple و Apple کنار هم قرار می‌گیرند. فقط مرتب‌سازی ساده با کد نویسه همهٔ حروف بزرگ را پیش از حروف کوچک می‌گذارد.
آیا جابه‌جایی تصادفی واقعاً تصادفی است؟
از درهم‌ریزی بی‌طرفانهٔ فیشر–یتس با یک مولد شبه‌تصادفی سریع و دانه‌دار استفاده می‌کند. برای کاربرد روزمره به اندازهٔ کافی منصفانه است، اما برای قرعه‌کشی، بخت‌آزمایی یا امنیت مناسب نیست.
در ترتیب عددی، خطوطی که عدد ندارند کجا قرار می‌گیرند؟
به انتهای فهرست می‌روند و میان خودشان الفبایی مرتب می‌شوند. خط‌هایی که عدد دارند بر اساس مقدار اولین عدد موجود در خط مرتب می‌شوند.
آیا می‌توانم خطوط را به ترتیب الفبای معکوس مرتب کنم؟
بله، Z→A را انتخاب کنید. همان مقایسهٔ آگاه از زبان A→Z را به‌صورت معکوس به کار می‌برد، پس واژه‌های دارای نشانه و حروف بزرگ در جای درست می‌مانند.