Массив



1. Массив түралы жалпы мәлімет

1.1 Массив типтері және оны сипаттау
1.2 Деректерді сұрыптау әдістері
2 Массивты сұрыптау
2.1 Массивты таңдау бойынша сұрыптау
2.2 Массивты мойындық (шейкерлі) сұрыптау
Қазіргі кезеңде дербес компьютерлердің ғылымда, техникада, экономикада тіпті өндірістің кез келген саласында кеңінен қолданыла бастауымен оның маңызы туралы айтып, ешкімді таң қалдыра алмайсың. Техниканың даму жетістіктеріне сай ЭЕМ – біздің өміріміздің әр алуан салаларында қызмет етуде. Айталық компьютердің көмегімен көптеген салалардың қызметі жеңілдеді десек те болады.
Осыған дейінгі қарастырылып келген мәлімет типтері қарапайым болып есептеледі. Себебі олар тек бір ғана объектіге яғни бір ғана санға немесе символға қатысты ғана қолданылады. Turbo Pascal-да бір типке жататын бірнеше элементтерден тұратын обектілерді де пайдалануға болады. Массив осындай бір типке жататын элементтерден құралатын құрылымдық тип болып табылады.
Қарапайым типтер қатарына жататын стандартты (Integer,real) және қолданушылар (тізбектелген тип) типтерінде бір айнымалыны сақтау үшін, негізінен компьютер жадысының бір ғана ұяшығы қолданылады. Бірақ көптеген программалау есептерінің шешімін табу барысында әрбір элементтің деректерін жеке айнымалыға сақтау орнына, оларды тізбектеп бір жерде сақтау анағұрлым тиімді болып табылады.
Мәліметтер қорында үлкен көлемді жазбалар болғандықтан белгілі критерий бойынша қолмен іздеу қажетті ақпаратты табу қиындау болады, кейде тіпті мүмкін болмайды. Сол себепті массивтерді сұрыптау қажет. Сұрыптау - массив элементтерін белгілі бір заңдылықпен орындарын ауыстырып реттеу процессін айтамыз. Мысалы, сандар массивін өсуі, кемуі бойынша сұрыптау, жолдар массивін алфавит бойынша сұрыптау және тағы басқа.
Сұрыптау мақсаты - көптеген сұрыпталған обьектінің ішінен белгілі бір элементті іздеуді оңайлату. Ақпараттық жүйелерде мәліметтерді сұрыптаудың маңызы өте зор. Осы жұмыста біз массив сұрыптаудың әртүрлі әдістерін қарастырамыз.
1. Кеңесбаев С.М., Махметова А.М., Салғараева Г.И. Дербес компьютерде Бейсик, Паскаль тiлiнде программалау.- Алматы, 2003.-125 б.
2. Омарова Н., Тұрмағамбетова К.У., Нүриденова К.Н. Паскаль тiлiнде программалау негiздерi. – Алматы: Бiлiм, 1996.- 58 б.
3. Нақысбеков Б.Қ., Балапанов Е.Қ., Халықова К.З., Дәулетқұлов А.Б.. Паскаль тiлiнiң негiздерi.- Алматы: Рауан, 1998. – 49 б.
4. Әбдиев Қ.С. Бейсик программалау тiлi.- Алматы, 2002. – 152 б.
5. Рейнгольд Э., Нивергельт Ю., Део Н. Комбинаторные алгоритмы. М., Мир, 2000.- 256 с.
6. Шень А. Программирование: Теоремы и задачи. М., МЦНМО, 1995.- 203 с.
7. Пильщиков В.Н. Сборник упражнений по языку Паскаль. М.: Наука, 1999.- 165 с.

КІРІСПЕ

Қазіргі кезеңде дербес компьютерлердің ғылымда, техникада, экономикада тіпті өндірістің кез келген саласында кеңінен қолданыла бастауымен оның маңызы туралы айтып, ешкімді таң қалдыра алмайсың. Техниканың даму жетістіктеріне сай ЭЕМ - біздің өміріміздің әр алуан салаларында қызмет етуде. Айталық компьютердің көмегімен көптеген салалардың қызметі жеңілдеді десек те болады.
Осыған дейінгі қарастырылып келген мәлімет типтері қарапайым болып есептеледі. Себебі олар тек бір ғана объектіге яғни бір ғана санға немесе символға қатысты ғана қолданылады. Turbo Pascal-да бір типке жататын бірнеше элементтерден тұратын обектілерді де пайдалануға болады. Массив осындай бір типке жататын элементтерден құралатын құрылымдық тип болып табылады.
Қарапайым типтер қатарына жататын стандартты (Integer,real) және қолданушылар (тізбектелген тип) типтерінде бір айнымалыны сақтау үшін, негізінен компьютер жадысының бір ғана ұяшығы қолданылады. Бірақ көптеген программалау есептерінің шешімін табу барысында әрбір элементтің деректерін жеке айнымалыға сақтау орнына, оларды тізбектеп бір жерде сақтау анағұрлым тиімді болып табылады.
Мәліметтер қорында үлкен көлемді жазбалар болғандықтан белгілі критерий бойынша қолмен іздеу қажетті ақпаратты табу қиындау болады, кейде тіпті мүмкін болмайды. Сол себепті массивтерді сұрыптау қажет. Сұрыптау - массив элементтерін белгілі бір заңдылықпен орындарын ауыстырып реттеу процессін айтамыз. Мысалы, сандар массивін өсуі, кемуі бойынша сұрыптау, жолдар массивін алфавит бойынша сұрыптау және тағы басқа.
Сұрыптау мақсаты - көптеген сұрыпталған обьектінің ішінен белгілі бір элементті іздеуді оңайлату. Ақпараттық жүйелерде мәліметтерді сұрыптаудың маңызы өте зор. Осы жұмыста біз массив сұрыптаудың әртүрлі әдістерін қарастырамыз.

1. Массив түралы жалпы мәлімет

1.1 Массив типтері және оны сипаттау

Бір типтес берілгендерден құралып, барлық элементтеріне бір ортақ атау берілген жиынды массив деп атаймыз. Массив құрылымдық типтер қатарына жатады. Массив элементтері нөмірленеді. Массивтің әрбір элементіне индексін көрсету арқылы жұмыс істеуге болады. Массивке мысал ретінде векторларды қарастыруға болаты. Егер массивке кестелік берілгендер жазылса (матрица), онда элементтері екі индекс бойынша нөмірленеді [1].
Массив сипаттамалары:
* Типі - массив элементтерінің жалпы типі;
* Көлемі - массив индекстерінің саны;
* Шектелімі - әрбір индекстердің шектеу бойынша сәйкестігі;
* Пішімі - көлем және шектеулер жиындары.
Массивтер элементтерімен жұмыс жасау барысында, массив атауынан кейін міндетті түрде тік жақшаға алынған индекс көрсетіледі. Индекс ретінде сандар қолданылады.
Массивтер элементтерімен жұмыс жасау барысында, массив атауынан кейін міндетті түрде тік жақшаға алынған индекс көрсетіледі. Индекс ретінде сандар қолданылады.
Массивтерді қолдану үшін оларды типтер (type) немесе айнымалыларды сипаттау (var) бөлімінде хабарлану қажет.
Жалпы жазылу түрі:
Type
Массив типінің атауы = array [индекс типі] of элемент типі;
Var
Массив атауы: массив типінің атауы;
Мысалы:
Type
GRUP = array [1...8] of integer;
Var
A:GRUP; {А - массивіне жады бөлу }
Мұндағы:
Массив типінің атауы - массив элементтерінің жиынын сипаттайды;
Индекс типі - тізбектелген немесе шектелген типтерді көрсету;
Элемент типі - массив элементтерінің типін көрсету.
Берілген мысалдағы массивтің әрбір элементімен жұмыс істеу үшін, массив атауы және индексі берілуі тиіс. Массив индексі тік жақшаға алынып жазылады, сол себепті массивтің кез келген элементіне қатынас алуға болады.
Яғни берілген массивиің бірінші элементіне қатынас алу үшін массив атауынан кейін бірінші индексті көрсету қажет: A[1]; массивтің екінші элементіне қатынас алу үшін; A[2]; ал А массивінің сегізінші элементіне: A[8] көрсетіледі
A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8]
12 11 5 -2 405 -3 9 -7
Массивтің бірінші элементі. Массивтің екінші элементі. Массивтің үшінші элементі. Массивтің төртінші элементі. Массивтің бесінші элементі. Массивтің алтыншы элементі. Массивтің жетінші элементі. Массивтің сегізінші элементі.
Берілген массивтің кез келген элементтеріне арифметикалық операцияларды, салыстыру және меншіктеу операторларын қолдануға болады. Сонымен қатар, массивтерге Turbo Pascal программалау тіліндегі айнымалы типіне сәйкес келетін барлық стандартты процедуралар және функциялар қолданылады.
Массивтің кез-келген бір элементіне элементіне нәтиже беру үшін, меншіктеу операторы қолданылады:
Массив атауы[индексі]:=нәтиже
Мысалы:
а) А массивінің бірінші элементіне- 12 санын меншіктеу үшін: А[1]:=12;
ә) А массивінің бесінші элементіне- 405 санын меншіктеу үшін: А[5]:=1405;
б) А массивінің екінші элемент нәтижесін экранға- шығару үшін: writeln (A[2]); (экранға 11 шығады.)
в) А массивінің бесінші элементіне нәтижені пернелер тақтасы көмегімен енгізу үшін: readln(A[1]);
г) А массивінің бірінші және үшінші элементтерін қосындысын Sum айнымалысына меншіктеу үшін: Sum:=A[1]+A[3];(нәтижесінде Sum айнымалысына 17 саны меншіктеледі).
Бірөлшемді массивтер элементтерімен жұмыс.
Массивтің кез-келген элементерімен жұмыс істегенде программалау барысында олардың индекісінің мәні сипатталған шектеуден аспауы тиіс.
Егер массив индексінің мәні сипатталған шектеуден асып кетсе онда, синтаксистік қате тіркеліп, экранда Index type is not compatible with declaration деген сөз тіркестері шығарылады.
Массивтер қолдпанылатын программаларда {R+} директивасын жазу арқылы массивтің шектеулерін тексеруге болады. Егер прогаммада {R+}директивасы беріліп, массив индексі шектеуден асып кетсе, онда экранға Range check error сөз тіркесі шығарылады.
С++ тілі Си тілінің толықтырылған жиыны деуге болады.
Си және С++ тілдерінің мен мәләметтер типтерінің аттары болып табылады. С- де класс түсінігі жоқ.
СС++ тіліндегі тіліндегі кез-келген программа main функциясынан тұрады. Мұның орындалу барысында басқа функциялар шақырылады.
Программа құрылымы:
Кез-келген программа комментарийден басталады. Комментарийді Си тілінде блок түрінде беруге болады.
Содан кейін препроцессор дерективасы орналасады. Препроцессор директивасы берілгенде кітапханалық файлда - тақырыптық файлда орналасқан кодты программаға қою .h файлдар деп аталады. Тақырыптық файлдарда әртүрлі тұрақты мен кейін main функциясы сипатталған бөлігі орналасады.
Main функциясы... одан орындалуы басталып, Return инструкциясы шақырылғанда аяқталады.
Main функциясының денесі фигуралық жақшада орналасады.
Си тілінде жазылған программа текстінде кездесетін инструкциялар (нұсқаулар) препроцессор директивасы (ПД) деп аталады. Олар орындалады және программаның текстін өзгертуге мүмкіндік береді. Мысалы текстегі кейбір лексемдерді өзгерту, басқа файлдан мәтінді да бір бөлігін орындауға, трансляциялауға шектеу қою т.б. Барлық препроцессор директивасы таңбасымен басталады және үтір (;) #include директивасы.
Бұл программаға көрсетілген файлдағы мәліметтерді қосады. Бұл директиваның екі формасы бар:
#include файл аты
# include
#include директивасы іштестірілген болуы мүмкін, яғни қосылатын файлда тағы кездесуі мүмкін. бұл қосу үшін қолданады, яғни стандартты кітапханалық функциялар прототиптерінен тұратын файлдарды қосуға мүмкіндік береді. Сондықтан С тіліндегі программа осы директивадан #define - жиі қызметші сөздерді, операторларды және өрнектерді кейбір идентификаторлармен ауыстыруға мүмкіндік береді
Синтаксис - тілдің мәтіні (конструкциясы) құрылатын ережелер жиынтығы. Бұл ережелер тілде болуы мүмкін тіл символдары тізбектерін (мәтіндер) береді. Мүмкін емес мәтіндер машиналық бағдарламаларға аударылмайды және транслятормен қабылданбайды.
Семантика - тілдің әрбір конструкциясының мәнін анықтайтын ережелер жиынтығы. Семантика бағдарламаның детерминациясын, яғни белгілі бастапқы мәліметтерде пайда болған есептегіш процестің бірмәнділігінқатамасыз етеді.
Айнымалылар. Айнымалылар типтері Айнымалылар деп программаның орындалу барысында әр түрлі мәндерді қабылдай алатын шамаларды айтады. Олар идентификатормен белгіленіп, әрбір уақытта белгілі бәр мәнге ие болады. Айнымалылардың белгіленуі: AlFA,X3,SUMMA,A1B8т.с.с.Айнымалылар қарапайым және индексті болуы мүмкін.Индекспен берілген айнымалалар массив деп аталады.
Программа орындалу барысында мәндер өзгеретін шамалар айнымалылар деп аталады. Айнымалылар да, тұрақтылар сияқты программаның var деген қызметші сөзінен басталатын арнайы бөлімінде сипатталынуы тиіс
Әр адам программаны әр түрлі жазады(мен өзім программаны қысқа жазғанды жақсы көрем). Ең бастысы программа логикалық түрде дұрыс болу керек.
Мына есепте минимальды массивтың элементін анықтап аламыз, содан ұқсас минимальды элементтерді санын анықтап аламыз да, шарт жасаймыз егер минимальды элемент болса массивтің барлық элементтерін қосып оны массивтің өлшеміне бөлеміз (біздің есепте 5-ке), әйтпесе минимальды элементке нөлді меншіктейміз.
#include stdio.h standart input output кітапханасы
#include conio.h getch() функциясы клавиатураны басканша программа корсетилип турады
#define n 5 массивтің өлшемі
void main(){ с++ аркашанда main() функциясында программа орындалады
int a[n];  бес өлшемди массив a[5]
int i;
int min;
int k=0;
int s=0;
double sred;
int temp;
printf("\nMassivti engizinin \n");
for(i=0;in;i++)
scanf("%i",&a[i]); массивтерді клавиатурдан енгізу
min=0;
for(i=1;in;i++)
if(a[i]=a[min]) min=i; минимальды массивтин элементин аныктап аламыз
for(i=0;in;i++){
if(a[i]==a[min]) k++; минимальды элементтің санын анықтаймыз
}
printf("Minimaldi elementer sani k=%i\n",k);
printf("Minimaldi massiv a[%i]=%i\n",min,a[min]);
if(k==1){
for(i=0;in;i++) s=s+a[i];
sred=double(s)double(n);
printf("Arifmetikalik ortasi %f\n ",sred);
temp=int(sred);
a[min]=sred; арифметикалык ортасымен орыннын ауыстырамыз
sred=temp;
for(i=0;in;i++)
printf("%i ",a[i]);
}
else {
a[min]=0;
for(i=0;in;i++) минималдь элменттердің сонгы элементін нөлге меншіктейміз
printf("%i ",a[i]);
}
getch();
}
Массивтің кез келген элементтерімен жұмыс істегенде программалау барысында олардың индексінің мәні типтер немесе айнымалылар бөлімінде сипатталған шектеуден аспауы тиіс. Егер массив индексвінің мәні сипатталған шектеуден асып кетсе онда, смнтаксистік қате тіркеліп экранда Index type is not compatibie with declaration деген сөз тіркесі шығарылады.
Массивтер қолданылатын программаларда {R+} директивасын жазу арқылы массивтің шектеулерін тексеруге болады. Егер программада {R+} директивасы беріліп, массив индексі шектеуден асып кетсе, онда экранға Range check error сөз тіркесі шығарылады. Массивтерді программада қолдану үшін Turbo Pascal программалау тілінде оларды бірден var бөлімінде сипаттау жолы қарастырылған [2].
Turbo Pascal программалау тілі бір өлшемді массивтермен қатар екі өлшемді және көп өлшемді массивтерді қолдануға мүмкіндіктер береді.
Екі өлшемді немесе көп өлшемді массивтермен жұмыс істеу үшін, олар сипаттау бөлімінде көрсетілуі тиіс. Екі өлшемді массивтерді тік төртбұрышты таблицалар немесе матрицалар деп қарастыруға болады. Сондықтан мұнда баған және жол ұғымдары өз мағыналарында қолданылады.
Екі өлшемді массив элементтері екі индекспен анықталады. Айталық mat[3,2]:=7 түріндегі өрнек mat матрицасының үшінші жолы мен екінші бағанының қиылысуындағы элементі 7-ге тең екенін білдіреді. Екі өлшемді массиверді енгізу үшін for...do цикл операторлары қолданылады.
Жоғарыда айтылғандай әрбір жиымға оперативтік зердеде алдын ала оның элементтерінің саны және типі ескеріліп қатар орналасқан ұяшықтар бөлінеді. Бұл жұмыс программа жазуға дайындық жүргізу кезеңдерінде мұқият ұйымдастырылуы керек.
Мұндағы, А жиымы 30 элементтен, типі бүтін; В жиымы 20 элементтен, типі символдық; С жиымы 32 элементтен, типі нақты сан; D жиымы 70 элементтен (7 жол, 10 баған), типі нақты сан; К жиымы 12 элементтен (4 жол, 3 баған), типі символдық шама. Әр жиымға осы сипаттау бойынша оперативтік зердеден орын бөліп береді.
Жиымды сипаттап болғаннан кейін, операторлар бөлімінде жиым элементтеріне жай айнымалылармен орындалатын әртүрлі амалдар қолдануға болады. Оларды әртүрлі өрнектерде операндалар орнына For, While, Repeat операторларының параметрлерінде логикалық амалдарды салыстыру элементі ретінде пайдалануға болады. Программалық мәтінде жиымның әр элементі жиымның аты мен индексі арқылы жазылады. Бір ескеретіні индекс және индекс типі түсініктерін араластыруға болмайды. Индекс типі түсінігі тек жиымды сипаттайтын бөлімінде қолданылады. Ал индекс түсінігі операторлар бөлімінде жиым элементтерін белгілегенде қолданылады. Компьютер зердесіне енгізілген жиым элементеріне әртүрлі амалдар немесе әрекеттер орындауға болады. Яғни, жиым элементтерін сұрыптау: элементтер орнын ауыстыру, элементтердің қосындысын және арифметикалық ортасын, ең кіші не ең үлкен элементін іздеу, қосымша жиымдарды пайдалану,т.с.с.
Енді осы жоғарыдағы айтылған жиым элементтерін өңдеу тәсілдерін қарастырайық:
1. Жиымның екі элементінің орнын ауыстыру:
c:=a[i]; a[i]:= a[j]; a[j]:=c;
2. Бірөлшемді жиым элементтерінің қосындысын табу:
s:=0;
for i:=1 to 10 do
s:=s+a[i];
3. Бірөлшемді жиым элементтерінің ішінен оң элементтердің санын табу (сұрыптау тәсілі):
k:=0;
for i:=1 to 10 do
if a[i]0 then k:=k+1;
4. Бірөлшемді жиымның үлкен элементін және оның индекісін табу:
max:=a[1];
n:=1;
for i:=2 to 10 do
if a[i]max then begin max:=a[i]; n:=i; end.

5. Бірөлшемді жиымның ең үлкен, ең кіші элементін табу.
#include
#include
using namespace std;

int main(){
int a[10];
int k1=0,k2=0;
int min,max;
cout"Vvedite massive" for (int i=0;i10;i++){
cout"a["";
cina[i];
}
min=a[0];
max=a[0];
for (int i=1;i10;i++)
{
if(a[i]=min)
{
min=a[i];
k1=i;
}
else
{
if (a[i]=max)
{
max=a[i];
k2=i;
}
}
}
cout"Massivtegi en kishi san = " cout"Massivtegi en kishi sannin orni = ""a["
cout"Massivtegi en ulken san = " cout"Massivtegi en ulken sannin orni = ""a[" getch();
return 0;
}
Сонымен, массив дегеніміз - мәліметтердің бүтін санды индекс көмегімен кіруге болатын бір ғана типтен тұратын құрылымы.
А[0], А[1], А[2], ..., А[n]
Массивтермен жұмыс жасауда элементтерге кіруді ұйымдастыру маңызды әрекет болып саналады.

1.2 Деректерді сұрыптау әдістері

Массивтің минималды және максималды элементтерін анықтау
Ең алдымен массивтің ең кіші немесе ең үлкен элементі деп жорамалмен 1-ші элементі алынады. Ары қарай массивтің ең кіші немесе ең үлкен элементін табу үшін цикл орындалады, яғни сол элемент басқа элементтермен салыстырылады. Егер ағымды элемент басқаларға қарағанда ең үлкен болса, онда сол элемент ізделінді элемент болғаны, басқа жағдайда ең үлкен элемент өзгеріссіз қалады.
Сұрыптау - бұл қандай да бір жиынның элементтерін кему немесе өсу ретімен ауыстыру процесі.
Массивтерді сұрыптау алгоритмдері бірнешеу [3]. Тиімділік критерийі бойынша қарапайым және жақсартылған болып бөлінеді.
Қарапайым:
* Таңдау көмегімен сұрыптау;
* Ауыстыру арқылы сұрыптау;
* Қарапайым қосумен сұрыптау.
Жақсартылған әдіс
* Шелл сұрыптауы;
* Бұтақ көмегімен сұрыптау;
* Жылдам сұрыптау.
Сұрыптаудың мәні сонда жазулар тізімінің реттілігін кілттік өріс мәндері кемімейтін тізбек құратындай етуіміз керек. Басқа сөзбен айтқанда R1, R2, .. , Rn жазулары кілттік мәндері K1, K2,...,Kn орналасуы керек. Ki1Ki2 ... Kin.
Мұнда реттелген тізбектегі кілттердің бірдей мәндері бар жазулар бір-бірімен қатар орындалады. Сұрыптау әдістері 2 категорияға бөлінеді:
* массивтерді сұрыптау (ішкі сұрыптау)
* тізбектелген файлдарды сұрыптау (сыртқы сұрыптау).
Массивтер ішкі оперативті жадыда орналасады. Оған кез келген уақытта тез кіруге болады. Ал сыртқы сұрыптау реттеуге тиісті мәліметтер көлемі өте үлкен болғанда мәліметтердің оперативті жадыға симай қалғанда қолданылады.
Таңдау көмегімен сұрыптау.
А массивінде мәліметтердің n элементі сақталған және бұл массив бойынша n-1 жүріс етеді. 0-ші жүрісте ең кіші элемент таңдалады. Ол кейіннен А0 элементпен айырбасталады. Келесі жүрісте тізімнің А1 элементінен бастап реттелмеген бөлігі қарастырылады. Мұнда ең кіші элемент тауып алынады да А1-де сақталады. Ары қарай А2 ... Аn-1 тізіміндегі ең кіші элемент ізделеді. Табылған мән А2-мен ауысады. Осылайша, n-1 жүріс өтеді. Соңында тізімнің реттелмеген аяғы 1 элементке дейін қысқарады. Сол элемент ең үлкен болып табылады.
Мысалға, 50,20,40,75,35 массив берілген.
0-жүріс. 20-ны таңдаймыз. Оны А0-мен ауыстырамыз (А0=50).
20,50,40,75,35.
1-жүріс. 35 таңдаймыз. Оны А1-мен орын ауыстырамыз.
20,35,40,75,50.
2-жүріс. 40 таңдаймыз. Оны А2-мен орын ауыстырамыз.
20,35,40,75,50.
3-жүріс. 50 таңдаймыз. Оны А3-пен орын ауыстырамыз.
20,35,40,50,75.
Соңғы қалған 75 саны ең үлкен элемент сұрыпталып шыққанда:
20,35,40,50,75.
Сұрыптау - массив өлшеміне ғана тәуелді салыстырулардың белгіленген санына ие болуы керек. i -ші жүрісте (A ... A )-ге дейінгі элементтердің салыстырулар саны (n-1-(i+1)+1)=n-i-1 тең болады.
Алгоритмнің күрделілігі - О(n ) тең болады.
Ауыстыру арқылы сұрыптау (Көпіршік әдісі).
Бұл әдіс тиімділік жағынан ең соңғы орынға ие болған, ең қарапайым әдістердің классына жатады. Бірақ, оған қарамастан, бұл әдіс кең танымал, өте тез еске сақталатын атының арқасында - судың бетіне шығатын көпіршік әдісі немесе батып бара жатқан доп әдісі, кімге қалай ұнайды.
n элементтер бар дейік, олар а1 а2, а3, . . ., аn, массив ұяшаларында орналасқан. Ыңғайлылық үшін элементпен кілт бір мәнге ие дейік. Алгоритм n-1 қадамдардың қайталануларынан тұрады, оның әрқайсысында қалған өндірілмеген жиында жұптасқан көрші элементтерді салыстырулары арқылы минималды элемент табылады.
Қадам 1. аn - ді аn-1 - мен салыстырамыз, және егер аn аn-1 онда оларды орындарымен ауыстырамыз, содан кейін аn-1 және аn-2 салыстырамыз, мүмкін, олардың да орындарын ауыстырамыз, аn-2 және аn-3 және ары қарай жалғастыра береміз, а2 және а1 элементтеріне келгенше. Нәтижесінде бірінші орында ең минималды элемент тұрады , ол содан кейін сұрыптау процессіне қактыспайды
Қадам 2. ... жалғасы

Сіз бұл жұмысты біздің қосымшамыз арқылы толығымен тегін көре аласыз.
Ұқсас жұмыстар
Символдық және көпөлшемді массивтертер
Массив элементтерін сорттау
Си және Си тілініңи көрсеткіштері мен массив элементтері
С++ Массивтер
Бір өлшемді массивтерді сұрыптау алгоритмдері
С++ тіліндегі массивтер
Турбо паскальда екі өлшемді массивтерді ұйымдастыру технологиясы
Бір өлшемді массивтер
Turbo Рascal программалау жүйесі
Массивтерде компоненттер құру
Пәндер