Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2-blok.docx
Скачиваний:
0
Добавлен:
23.01.2020
Размер:
559.25 Кб
Скачать

Int b[10]; //қосымша массив

int i,j=0;

for(i=0;i<n;i++)

if(a[i]<0){b[j]=a[i];j++;} //а-дан b-ға барлық теріс элементтерді көшіру

for(i=0;i<n;i++)

if(a[i]>=0){b[j]=a[i];j++;} //а-дан b-ға барлық оң элементтерді көшіру

for(i=0;i<n;i++) printf (“ %d ”, b[i]);

10.2 Жиымдарды өңдеу тәсілдері(мысалдар)

3 есеп.

Массивтің барлық жұп элементтерін жою керек.

int b[10];

int i,j=0;

for(i=0;i<n;i++)

if(a[i]%2!=0){b[j]=a[i];j++;}

for(i=0;i<j;i++)

printf(“ %d ”, b[I]);

printf ("\n");

4-түрдегі есептер

Іздеу есептерінде берілген шартқа сəйкес келетін элементті іздеп табу керек. Ол үшін жиым элементтерін біртіндеп тізбектей қарастырып отырып шартты тексеріп шығу қажет. Осылай ету барысында циклден шығудың екі жолы бар:

• керекті элемент табылғаннан кейін ;

• жиым элементтері тегіс қаралып шықты, керекті элемент табылмады.

1 есеп. Берілген К санына тең жиымның алғашқы элементін табу керек.

int k;

printf("\nK=");

scanf(“%i”,&k);

int ok=0; // элемент табылғаны||табылмағаны белгісі

int i,nom;

for(i=0;i<n;i++)

if(a[i]==k){ok=1;nom=i;break;}

if(ok==1)

printf("\nnom=",nom);

else

printf("\nk-ға тең элемент табылмады!");

11 Жиымды сұрыптау тәсілдері

Сұрыптау:берілген объектілер жиынын ұсынылған реттілікпен қайта теріп орналастыру процесі.Жиымды сұрыптау жылдамдығы әр түрлі болады.Қарапайым сұрыптау тәсілдері n*n рет салыстыруды керек етеді,мұндағы n:жиым элементтері саны,ал жылдам сұрыптау тәсілі n*ln(n) рет салыстыруды қажет етеді.Қарапайым тәсілдер түсінуге жеңіл,өйткені алгоритм түсінікті.Күрделі тәсілдер аз әрекеттер санын керек еткенмен ,операциялары күрделірек болады,сондықтан элементтер саны аз жиымдарға қарапайым тәсілдерді қолданған дұрыс.Қарапайым тәсілдер үш топқа бөлінеді:жай таңдау жолымен сұрыптау,жай енгізу тәсілімен сұрыптау,жай алмастыру тәсілімен сұрыптау.

Жай таңдау жолымен сұрыптау:жиымның ең кіші элементі анықталады да,ол бірінші элементпен орын ауыстырады.Қалған элементтермен де осы тәсіл қайталанады.Мысал: 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 қосылады да,сол әрекеттер қайталанады.Мысалы: 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;}

/* жиым элементтерін кемуі бойынша реттеу */

#include <conio.h>

#include <stdio.h>

#define n 10

main()

{ int i,j,t,c;

int a[n]={6,5,9,8,7,4,1,2,3,0};

int *pa,max;

clrscr();

printf("a[10]элементтері: ");

for (i=0; i<n; i++)

printf(" %d ",a[i]);

pa=a; max=*pa; t=0; //max пен индексін табу

for (i=1; i<n; i++)

if((*(pa+i)) > (max))

{max = *(pa+i); t=i;

} printf("\nmax=%d индексі=%d\n",max,t);

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]