Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Int i,min,n_min,j;
for(i=0; i< n-1; i++) { min=a[i]; n_min=i; // минимумды іздеу for(j=i+1; j< n; j++) if(a[j]< min) { min=a[j]; n_min=j; } a[n_min]=a[i]; //алмастыру a[i]=min; } Жай енгізу (кірістіру) тә сілімен сұ рыптау Жиым элементтері екіге – бастапқ ы тізбекке жә не дайын тізбекке бө лінеді. Ә рбір адымда I=2 нө мірінен бастап, бастапқ ы берілген тізбектен I-ші элемент алынады да, ол дайын тізбектің керекті жеріне орналастырылады. Мұ нан кейін I-ге 1 қ осылады да, сол ә рекеттер қ айталанады.
Керекті орынды іздеу кезінде оң жақ тағ ы келесі элементпен орын ауыстыру қ арастырылады, яғ ни таң далып алынғ ан элемент сұ рыпталғ андардың J: =I-1 нө мірінен басталатын кезекті элементімен салыстырылады. Егер таң далып алынғ ан элемент a[I]-ден артық болса, онда ол сұ рыпталғ андар ішіне қ осылады, ә йтпесе a[J] бір орынғ а ығ ысады да, таң далғ ан элемент сұ рыпталғ андар ішіндегі келесі элементпен салыстырылады. Керекті орынды іздеу ә рекеті екі жағ дайда: - егер a[J]> a[I] болатын элемент табылса; - дайын тізбектің сол жақ шетіне жеткен кезде аяқ талады. Мысалы: Int i, j, x; for(i=1; i< n; i++) { x=a[i]; //ауысатын элементті есте сақ тау j=i-1; while(x< a[j]& & j> =0) //керекті орынды іздеу { a[j+1]=a[j]$ //оң ғ а жылжыту J--; } a[j+1]=x; //элементті кірістіріп қ ою } Жай алмастыру арқ ылы сұ рыптау Мұ нда ең соң ғ ыдан бастап, екі элемент салыстырылады да, қ ажет болса, орындары алмастырылады. Осындай ә рекет нә тижесінде ең кіші элемент жиымның ең сол жақ шетіне ығ ысады. Қ алғ ан жиым элементтері ү шін де осы процесс қ айталанады.
for(int i=1; i< n; i++) for(int j=n-1; j> =i; j--) if(a[j]< a[j-1]) {int r=a[j]; a[j]=a[j-1]; a[j-1]=r; } 9-есеп. Бү тін оң жә не теріс сандардан тұ ратын a[n] жиымының жұ п нө мірлі элементтерінің қ осындысын табу керек, мұ нда n саны енгізіледі, ал жиым элементтерінің мә ндері кездейсоқ бү тін сандардан тұ рады. rand() функциясы 0...32767 аралығ ындағ ы бү тін сан береді. Оны пайдалану ү шін stdlib.h директивасын, яғ ни тақ ырып файлын қ олдану қ ажет. Жиым элементтері екі разрядты оң жә не теріс сандардан тұ руы ү шін алынғ ан кездейсоқ сан 100-ге бө лініп, қ алдығ ынан 50 алып тасталынғ ан. /*жиымның жұ п элементтерi қ осындысы*/ #include < stdio.h> #include < stdlib.h> #include < conio.h> Main() { int a[50]; Int n; printf(" \nЖиымда неше элемент бар? "); scanf(" %d", & n); printf(" Жиым элементтерi: \n"); for(int i=0; i< n; i++) { a[i]=rand()%100-50; /*жиымғ а 0 - 50 аралығ ындағ ы кездейсоқ сандарды меншiктеу */ printf(" %d, ", a[i]); // сандарды экранда бейнелеу } int sum=0; for(i=0; i< n; i+=2) sum+=a[i]; // 0, 2, 4... индекстi элементтердi қ осу printf(" \nЖиымның жұ п элементтерi қ осындысы: %d", sum); getch(); // нә тижелiк экранды жапқ ызбай, кө руге мү мкiндiк беру } 10-есеп. Бү тін сандардан қ ұ ралғ ан А(10) бір ө лшемді жиымы берілген. Сол жиым элементтерінің арифметикалық ортасын табу керек. /* А[10] жиымынын арифметикалық ортасын табу */ #include < conio.h> #include < stdio.h> #define n 10
|