C#-та қосу, азайту, КӨбейту, БӨлу амалдары


ТАҢДАУ ӘДІСІ БОЙЫНША СҰРЫПТАУ



бет18/19
Дата14.10.2023
өлшемі0,94 Mb.
#115131
1   ...   11   12   13   14   15   16   17   18   19
ТАҢДАУ ӘДІСІ БОЙЫНША СҰРЫПТАУ
Алгоритм сипаттамасы:
Массивтің алғашқы қадамында минималды мәні бар элемент тұрады, кейін ол массивтің нөлінші позициясында тұрған элементпен орын ауыстырады (егер минималды элемент онсыз да, нөлінші позицияда тұратын болса, орын ауыстыру сәйкесінше болмайды). Содан соң, сұрыптау үрдісінен таңдалып алынады. Келесі итерацияда қалған элементтердің ішіндегі минималды элемент алынады. Ол бірінші позициядағы элементпен орын ауыстырады. Содан кейін минималды болып отырған үшінші элемент ізделінеді, үшінші позициядағы элеменетпен орын ауыстырады. Солай жалғаса береді. Барлық итерациялардан соң минималды мәннен максималды мәнге дейін сұрыпталған массив пайда болады.
Мысалы:
Бізде келесі массив бар: 3 9 1 4 0
Бірінші итерация. Массивтің минималды элементін іздейміз. Ол үшін бірінші позициядағы санды алып, шартты түрде оны минималды деп, өзгелермен салыстырамыз. Егер ағымдағы саннан кіші сан табылатын болса, ол минималды деп танылып, кейін осы әдіспен басқаларымен салыстырылады. Соңында, барлық массивті өткен соң, ең минималды мәні бар санды табамыз.
Содан кейін, біз табылған минималды мәнді массивтің нөлінші позициясындағы элементпен орнын ауыстырып, осы «нөлінші» позицияны сұрыптау үрдісінен шығарамыз.
Ағымдағы минималды элемент қалыңдатылған қаріппен белгіленетін болады.
3 9 1 4 0
Беріліп отырған минималды элемент 9-бен салыстырылады. Ол 9-дан кіші. Сондықтан, келесі элементпен салыстырылады. 1 саны 3-тен кіші, сәйкесінше 1 бұл біздің қазіргі минималды элементіміз.
3 9 1 4 0
Салыстыруды жалғастырамыз. 1 кіші 4-тен, бірақ 0 кіші 1-ден, енді ол минималды болып есептеледі.
3 9 1 4 0
Біз массивті қарап шығып, оның ең кіші элементін таптық.
Енді осы элементті нөлінші позициядағы элементтің орнымен ауыстырамыз да ештеңемен салыстырмайтын боламыз (ол мәнсіз және артық уақытты алады). Итерация қадамыз 1-ге азайтып отырамыз.
0 9 1 4 3
Екінші итерация. Реттелмеген сандардың ішінен бірінші элементті минималды деп қабылдап, басқаларымен салыстрамыз.
0 9 1 4 3
Бірлік 9-дан кіші, енді ол минималды.
0 9 1 4 3
Бірлік 4 пен, 3 пен салыстырылады, бірақ оладың бәрі үлкен. Сәйкесінше, бұл біздің келесі минималды элемент болады.
Біз оны массивтің бірінші позициясындағы элементпен орнын ауыстырамыз және итерация қадамының санын тағы да 1-ге қысқартамыз.
0 1 9 4 3
Үшінші итерация. Осы жолмен келесі минималды санды іздейміз.
0 1 9 4 3
Төрт тоғыздан кіші.
0 1 9 4 3
Үш төрттен кіші. Біз массивтің барлығын қарап шықтық, олай болса 3 минималды мән болып табылады. Оның орын массивтің екінші позициясындағы элементпен ауыстырамыз.
0 1 3 4 9
Төртінші итерация. Қалған сандарды салыстырамыз. Ағымдағы минималды 4 саны 9-дан кіші. Олай болса, ол орнында қалады. Одан кейін массивтегі 9 саны ғана қалғандықтан, ол массивтің максималды элементі болады. Сұрыптау аяқталды.
Таңдау әдісінің нәтижесінде келесі массив қалады:
0 1 3 4 9
Бағдарлама коды:
static int[] ViborSort(int[] mas)
{
for (int i = 0; i < mas.Length - 1; i++)
{
//минималды санды іздеу
int min=i;
for (int j = i + 1; j < mas.Length; j++)
{
if (mas[j] < mas[min])
{
min = j;
}
}
//элементтерді ауыстыру
int temp = mas[min];
mas[min] = mas[i];
mas[i] = temp;
}
return mas;
}
Енді біз main функциясында не болатынын қарастырайық:
static void Main(string[] args)
{
Console.WriteLine("Сұрыптау үшін неше сан керек екенін жазыңыз:");
int N = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Сұрыптау үшін сандар енгізіңіз:");
int[] mas = new int[N];
for (int i = 0; i < mas.Length; i++)
{
mas[i] = Convert.ToInt32(Console.ReadLine());
}
ViborSort(mas);
Console.WriteLine("Сұрыпталған массив:");
for (int i = 0; i < mas.Length; i++)
{
Console.WriteLine( mas[i]);
}
Console.ReadLine();
}
Нәтижесі:




Достарыңызбен бөлісу:
1   ...   11   12   13   14   15   16   17   18   19




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет