Umume manajer file grafis ora ngurutake kanthi leksikografis, nanging nggunakake "urutan alami". Pamblokiran nomer ing jeneng sing Juru minangka nomer - pemblokiran luwih gedhe saka nomer menang, malah yen ngelawan bakal metu ing istilah sejatine sifate abjad. Ing idea konco ngurutake alam: Apa wong biasane pengin "9 sadurunge 10", "Bab 2 sadurunge Bab 10", tanpa kudu nambah nul anjog.
Pasangan file ing ngisor iki kanthi alami diurutake kanthi urutan munggah kaya ing ngisor iki:
build-9e2.logbuild-950.log
Ngagetne, nanging bisa diterangake: Blok digit pertama \(9\) luwih cilik tinimbang blok digit pertama \(950\) .
IMG_12113419_90.jpgIMG_0554363070_90.jpg
Nomer \(12113419\) kurang saka \(554363070\) (utamane \(0\) dibusak).
temp_0C.txttemp_2C.txttemp_-3C.txttemp_10C.txttemp_-12C.txt
Angka sing dibandhingake yaiku \(0\) , \(2\) , \(3\) , \(10\) , \(12\) - "-" ora dianggep minangka bagéan saka nomer kasebut.
Malah "alfabetis" ora ambigu sacara global: Kapitalisasi, umlaut kaya ä (Jerman), utawa aksara multi-karakter kaya ch (Ceko) mimpin kanggo varian sah. Mulane, "Sejatine alfabet" gumantung konteks. Windows Explorer nindakake iki ing fungsi StrCmpLogicalW . Nalika kode sumber sawijining (shlwapi.dll) kepemilikan lan ora umum, ana reimplementations, contone, saka ReactOS.:
{
TRACE("%s, %s\n", wine_dbgstr_w(str), wine_dbgstr_w(comp));
if (!str || !comp)
return 0;
while (*str)
{
if (!*comp)
return 1;
else if (*str >= '0' && *str <= '9')
{
int str_value, comp_value;
if (*comp < '0' || *comp > '9')
return -1;
/* Compare the numbers */
StrToIntExW(str, 0, &str_value);
StrToIntExW(comp, 0, &comp_value);
if (str_value < comp_value)
return -1;
else if (str_value > comp_value)
return 1;
/* Skip */
while (*str >= '0' && *str <= '9') str++;
while (*comp >= '0' && *comp <= '9') comp++;
}
else if (*comp >= '0' && *comp <= '9')
return 1;
else
{
int diff = ChrCmpIW(*str, *comp);
if (diff > 0)
return 1;
else if (diff < 0)
return -1;
str++;
comp++;
}
}
if (*comp)
return -1;
return 0;
}
Google Drive, OneDrive, KDE, lan layanan sing padha nuduhake prilaku ngurut sing padha. Piranti CLI kaya... ls lan find ngurutake beda saka manajer file GUI. Semantik ana ing jeneng file, dudu API. Yen sampeyan pengin asil tanpa surprises, netepake konvènsi: separator konsisten, nomer berlapis lan nangani cetha saka Unit. Banjur "abjad" dadi bisa ditebak maneh.