Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






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; //элементті кірістіріп қ ою

}

Жай алмастыру арқ ылы сұ рыптау

Мұ нда ең соң ғ ыдан бастап, екі элемент салыстырылады да, қ ажет болса, орындары алмастырылады. Осындай ә рекет нә тижесінде ең кіші элемент жиымның ең сол жақ шетіне ығ ысады. Қ алғ ан жиым элемент­тері ү шін де осы процесс қ айталанады.

        94  
           

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






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.