Массив дахь өгөгдөл боловсруулалтыг дараалан тоолох, харьцуулах, боломжит утгыг хайх замаар гүйцэтгэдэг. Үүний зэрэгцээ массивын том хэмжээ нь нөөцийн зардлыг мэдэгдэхүйц нэмэгдүүлдэг. Алгоритмын массивын бүх элементүүдийг давтан дамжуулах хугацааг урьдчилан захиалсан тохиолдолд мэдэгдэхүйц багасгаж болно. Массивыг ихэвчлэн хамгийн бага тоо эсвэл тэмдэгтээс эхлэн өсөх дарааллаар эрэмбэлдэг. Эрэмбэлэх алгоритмуудыг тодорхой даалгаврын нөхцлийг үндэслэн сонгох хэрэгтэй.
Зааварчилгаа
1-р алхам
Массивыг ангилах хэд хэдэн арга байдаг. Алгоритмчлахад хамгийн хялбар нь "хөөс" ангилах боловч хамгийн удаашралтай нэг юм. Энэ аргын мөн чанар нь өгөгдлийн массивыг дараалан туулж, хос элемент бүрийг харьцуулах явдал юм. Хэрэв хүүхэд өмнөхөөсөө жижиг бол газруудыг сольж өгдөг. Дараа нь алгоритм дахин эхэлнэ. Эрэмбэлэх C кодын жишээ загвар:
int mаss [10];
int el_min = 10;
for (int i = 0; ii; j--)
хэрэв (lеss (mаss [j], mаss [j-1]))
swаp (mаss [j], mаss [j-1]);
}
Алхам 2
Массивыг өсөх дарааллаар эрэмбэлэх оновчтой алгоритмуудын нэг нь оруулах арга гэж тооцогддог. Алгоритмын мөн чанар нь өгөгдсөн дарааллыг бүлэг элементүүдийн дунд (өсөх дарааллаар) бүрдүүлэхэд оршино. Гогцоонд байгаа тусгай боловсруулагч нь захиалгын массивыг шалгадаг. Өсөх дарааллаар эрэмбэлэхийн тулд дараах нөхцлийг зааж өгсөн болно. Хэрэв дараагийн элемент нь өмнөх элементээс бага бол түүнийг байрнаас нь аваад утгатай нь тохирох элемент дээр байрлуулна. С хэл дээр өгсөх эрэмбэлэх програмын жишээ код:
int Kol = 40;
int mаss [Кол], к;
for (int i = 1, j = 0; i <Kol; i ++)
{
k = mаss ; // массивын элементийг хадгалах туслах хувьсагч
j = i - 1;
байхад (k <mаss [j])
{
mаss [j + 1] = mаss [j];
j--;
хэрэв (j <0) завсарлага;
mаss [j + 1] = k;
}
}
Алхам 3
Өөр нэг түгээмэл хэрэглэгддэг ялгах арга бол массивын хамгийн бага буюу хамгийн их элементийг олох замаар захиалах алгоритм юм. Өсөн нэмэгдэж буй дарааллаар ангилахдаа массиваар дамжин өнгөрөх үед түүний хамгийн бага утга бүхий элементийг олж массивын эхэнд байрлуулна. Үүний оронд эхний байр суурийг эзэлж байсан элементийг суулгасан болно. Массивыг цаашид авч үзэх үед дүүргэсэн зайг хасах болно. Массивыг бүхэлд нь эрэмбэлтэл дараагийн хамгийн бага элементийг хайж, хоёрдугаарт оруулна. Жагсаалтын хамгийн бага элементийг олох аргаар кодыг эрэмбэлэх:
int mаss [30], bb;
int Kоl = 30, min, pоs;
for (int i = 0; i <Kol -1; i ++)
{
min = mаss ;
pоs = i;
for (int j = 0; j <Kol; j ++)
{
хэрэв (mаss [j] <min)
{
min = mаss [j];
pоs = j;
}
bb = mаss ;
mаss = mаss [pоs];
mаss [pоs] = bb;
}
}