using
System;
namespace
masala
{
class
Program
{
public
static
void
Main
(
string
[] args)
{
int
n,m,j;
int
[] a=
new
int
[
100
];
Console
.
WriteLine
(
" n ga son kiriting="
);
n=
int
.
Parse
(
Console
.
ReadLine
());
for
(
int
i=
0
;i
6
7
3
8
4
6
7
3
8
4
(1)
6
7
3
8
4
(2)
3
6
7
8
4
3
6
7
8
4
(3)
3
4
6
8
7
3
4
6
8
7
(4)
3
4
6
8
7
16
{a[i]=
int
.
Parse
(
Console
.
ReadLine
());}
for
(
int
i=
1
;i
{
j=i;
while
((j>
0
)&&(a[j]
1
]))
{m=a[j];
a[j]=a[j-
1
];
a[j-
1
]=m;
j--;}}
for
(
int
i=
0
;i
{
Console
.
Write
(a[i]+
" "
);
}
Console
.
ReadKey
(
true
);
}
}
}
Dasturning natijasi quydagicha bo’ladi
17
2.
Selection sort alagaritmi
– bu tanlash algoritmidir. Tanlash algoritmi
saralash algoritmlarining eng oddiy saralash usuli hisoblanadi. Ushbu saralash
algoritmi ro’yhatning ikki qismga bo’linadigan qismi, chap tomonning oxiridagi
qismi va o’ng tomonning ajralmas qismiga bo’linadigan joylarda taqqoslashga
asoslangan saralash algoritmidir. Dastlabki holda, tartiblangan qism bo’sh va sarlavha
qilinmagan qism butun ro’yhat hisoblanadi. Eng kichik eliment unsorted qatordan
tanlanadi va eng chap element bilan almashtiriladi va bu element tartiblangan
qatorning bir qismiga aylanadi. Ushbu jarayonni bajarish tartibsiz qator qatorni o’nga
bir element bilan harakat qilishni davom ettiradi. Ushbu saralash algaritmi juda katta
malumotlar majmui uchun mos emas, chunki urtacha va eng yamon vaziyat
murakkabligi O(n
2
) , bu yerda n saralaniyotgan massivning elementlar sonini
bildiradi.
Quyida tanlash asosida saralash algoritmining dastur matnini
C++
dasturlash
tilida keltirib o’tamiz:
using
System;
namespace
masala
{
class
Program
{
public
static
void
Main
(
string
[] args)
{
int
n,m,j,t;
Console
.
WriteLine
(
" n ga son kiriting="
);
n=
int
.
Parse
(
Console
.
ReadLine
());
int
[] a=
new
int
[
100
];
for
(
int
i=
0
;i
{a[i]=
int
.
Parse
(
Console
.
ReadLine
());}
for
(
int
i=
0
;i
1
;i++)
{
t=i;
for
(
int
j=i+
1
;j
18
{
if
(a[t]>a[j])
{t=j;}
}
m=a[t];
a[t]=a[i];
a[i]=m;
}
for
(
int
i=
0
;i
{
Console
.
WriteLine
(a[i]+
" "
);}
Console
.
ReadKey
(
true
);
}
}
}
Dastur izohi: dastur
C#
dasturlash tilining kompyuterlar uchun mo’ljallangan
versiyalarida ishga tushirilgach hosil bolgan qora fondagi doskaga dastlab massiv
elementlari soni n so’ngra n ta massiv elementini kiritamiz. Massivning birinchi
elementi bilan qolgan barcha elementlarni taqqoslab chiqamiz. Agarda massivning
birinchi elementi qolgan barcha elementlarni ixtiyoriysidan katta bo’lsa u holda bu
elementlar urni almashadi. Kiyingi qadamda ikkinchi element bilan undan kiyin
turgan elementlarni taqqoslaymiz. Kiyingi qadamda uchinchi element va hakozo
oxirgi qadamda n-1 birinchi element bilan n-element taqqoslanadi. Har qadamda
taqqoslash sharti bajarilsa taqqoslangan elementlar o’rni almashadi va bu jarayon
taqqoslash sharti bajarilmay qolguncha davom etadi .
Dastur natijasi quyidagicha bo’ladi:
19
3.Quicksort saralash algoritmi
Quicksort saralash algoritmi bu tezkor saralash degan ma’noni anglatadi. Tezkor
saralash ( Quick sort ) algoritmi 1964 - yilda Charlz Hoar tomonidan taklif qilingan.
Charliz Hoar ingliz olimi, informatika va hisoblash texnikasi sohasida yetuk
mutaxassis. Uning “ Tezkor saralash ” algoritmi saralash bo`yicha eng ommabop
20
algoritm.
––––
Bu algoritm ham “ Bo`lib tashla va hukmronlik qil “ ( Bu metod algoritmlarni
qurishning asosiy metodlaridan biri. Murakkab masalani yechish uchun uni oddiyroq
bo`laklarga ajratish kerak. Massivni ham xuddi shunday saralash mumkin . buning
uchun uni ikki bo`lakka ajratamiz, bo`laklarni alohida saralaymiz, saralangan
massivlarni birlashtiramiz ) metodiga asoslanadi. Algoritmining g`oyasi: Massivda
bo`luvchi element
x
dan kichik yoki teng bo`lgan elementlar joylashsin, keyin undan
katta bo`lgan elementlar joylashsin. Keyin ularni alohida saralaymiz. Agar
a
massivda
n
ta element bo`lsa, bo`luvchi element sifatida
x=a[n/2]
ni olamiz. Chap tomondan
x
9
3
7
5
2
1
4
4
3
7
5
2
1
9
9
3
7
5
2
1
4
4
3
1
5
2
7
9
4
3
1
2
5
7
9
4
3
1
2
5
7
9
2
3
1
4
2
1
3
4
1
2
3
4
21
dan kichik katta yoki teng bo`lgan birinchi elementni topamiz, o`ng tomondan esa
x
dan katta bo`lmagan birinchi elementni topamiz va ikkalasining o`rnini almashtiramiz.
Ana shu jarayonni bo`luvchi element
x
ning chap tomonida undan kichik elementlar,
o`ng tomonida esa undan katta bo`lgan elementlar joylashb qolgunicha davom
ettiramiz. Shundan so`ng yuqoridagi jarayonni chap tomon uchun alohida o`ng tomon
uchun alohida bajaramiz va hakozo. Ko`rinib turganidek bu rekursiya jarayoniga
to`g`ri keladi.
Quyida quicksort saralash algoritmining C# tilidagi dastur matnini keltiramiz:
using
System;
namespace
masala
{
class
Program
{
public
void
qsort[
int
l,
int
r)
{
int
[] a=
new
int
[
1000
];
int
m,x,j,t,i;
m=(l+r)/
2
;
x=a[m];
i=l;j=r;
while
(i<=j)
{
while
(a[i]
while
(a[j]>x){j--;}
if
(i<=j)
{t=a[i];a[i]=a[j];a[j]=t;i++;j--;}}
if
(l
if
(i
public
static
void
Main(
string
[] args)
{
int
n;
n=
int
.parse(Console.ReadLine());
for
(
int
i=
0
;i
{a[i]=
int
.parse(Console.ReadLine());}
qsort(
0
,n-
1
);
for
(
int
i=
0
;i
22
{
Console.WriteLine(a[i]+
" "
);
}
Console.ReadKey(
true
);
}
}
}
Dastur natijasi quyidagicha bo’ladi:
23
2.2.Bubble sort saralash algoritmi.
Bubble sort saralash algoritmi qanday usulda saralash? Ushbu so`z pufakcha usulida
saralash degan ma’noni anglatadi. Bu saralash usulida massiv elementlarining ikki
qo`shni elementlari taqqoslanadi va agarda noto`g`ri joylashgan bo`lsa ularnung
o`rinlari almashtiriladi. Umumiy
n-1
marta ushbu jarayon bajariladi. Har safar ikkita
qo`shni element taqqoslanadi. Yuqoridagi jarayonda har bir element o`z o`rniga siljib
boradi xuddi suvdagi pufakchaga o`xshab. Shu sababli ham uning nomi pufakcha
usulida saralash deb nomlanadi. Bu algoritmning asosiy g‘oyasini yozish uchun
tartiblanishi kerak bo’lgan yozuvlar vertikal joylashgan massivda saqlanadi deb faraz
qilamiz. Kalit maydonning kichik qiymatli yozuvlari «yengil» va shuning uchun
pufakcha kabi ular yuqoriga «suzib chiqadi».
Massiv bo’ylab birinchi o’tishda massivning birinchi yozuvi olinadi va uning
kaliti navbatma-navbat keyingi yozuvlarning kalitlari bilan solishtirib boriladi. Agar
nisbatan «og‘ir» kalitli yozuvlar uchrasa, u holda bu yozuvlar joyini almashtiradi.
Nisbatan «yengil» yozuvlar uchraganda bu yozuv taqqoslash uchun etolon bo’ladi va
keyingi barcha yozuvlar shu kalit bilan solishtiriladi. Natijada eng kichik qiymatli kalit
massivning eng yuqorisiga chiqadi.
Massiv bo’ylab ikkinchi o’tishda massivning massivni birinchi o’tishda topilgan
yozuvdan keyin joylashgan og‘irligi bo’yicha ikkinchi kalit olinadi. Massiv bo’ylab
ikkinchi va keyingi o’tishlarda oldingi o’tishlarda topilgan yozuvlarni ko’rib chiqish
shart emas, chunki ular qolgan yozuvlarga qaraganda kichik kalitlarga ega.
24
Quyida bubble sort algoritmining
C#
tilidagi dasturini keltiramiz:
using
System;
namespace
masala
{
class
Program
{
public
static
void
Main
(
string
[] args)
{
int
n,t;
int
[] a=
new
int
[
100
];
Console
.
WriteLine
(
" n ga son kiriting="
);
n=
int
.
Parse
(
Console
.
ReadLine
());
for
(
int
i=
0
;i
{a[i]=
int
.
Parse
(
Console
.
ReadLine
());}
for
(
int
i=n;i>=
1
;i--)
{
for
(
int
j=
0
;j
1
;j++)
{
if
(a[j]>a[j+
1
])
{t=a[j];a[j]=a[j+
1
];a[j+
1
]=t;}}}
for
(
int
i=
0
;i
{
Console
.
WriteLine
(a[i]);
}
Console
.
ReadKey
(
true
);
}
}
}
26
Dasturning natijasi quydagicha bo’ladi
27
Xulosa.
Xulosa qilib shuni aytishim mumkinki, bu mavzuda men massiv elementlarini
saralash usullarining ichida bubble sort saralash algoritmining qaysidir sohalarda
boshqa usullarga nisbatan qulaylik tomonlari bilan ajralib turishini ko`rsatishga harakat
qildim. Bundan tashqari, ya’ni bubble sort algoritmidan tashqari saralash
algoritmlaridan quicksort saralash algoritmi, insertion sort saralash algoritmlarini
tushuntirishga harakat qildim. Ushbu saralash algoritmlarining dasturlarini C# tilida
yozganligim uchun bu saralash algoritmlariga yanada ko`proq ko`nikma hosil qildim.
Hali sanashni bilmay turib sonlar ustida arifmetik amallar bajarib
bo`lmaganidek, men ham ushbu kurs ishidagi asosiy qismning birinchi bo`limida
massivlar haqida kengroq to`xtalib o`tdim. Ikkinchi bo`limda esa saralsh
algoritmlarining turlari va ularning bir - biridan farqi haqida kengroq tushunchalar
keltirib o`tdim. Va nihoyat uchinchi bo`limda kurs ishining asosiy qismini, bubble sort
saralash algoritmi va uning dasturini yozdim.
28
Foydalaniladigan adabiyotlar rо‘yxati:
Asosiy adabiyotlar
1. Герберт Шилдт. C# 4.0: полное руководство. М.: ООО "И.Д. Вильяме", 2011,
1056 с.
2. Карли Уотсон, Кристиан Нейгел, Якоб Хаммер Педерсен, Джон Д Рид, Морган
Скиннер, Эрик Уайт. Visual C# 2008: базовый курс.: Пер. с англ. - М.:ООО "И.Д.
Вильяме", 2009. -1216 с.
3. Карли Ватсон, Марко Беллиназо, Олли Корне, Дэвид Эспиноза. С#.
Издательство «Лори», Издательский дом «Питер», 2006
4. Павел Агуров. C# сборник рецептов. Санк-Петербург, «БХВ- Петербург» 2007.
5. Эндрю Троелсон. C# и платформа .Net. Библиотека программиста. - СПб.:
Питер, 2007.
6. Madraximov Sh.F., Ikramov A.M., Babajanov M.R. C++ tilida programmalash
bo’yicha masalalar to’plami. O’quv qo’llanma // Toshkent, O’zbekiston Milliy
Universiteti, “Universitet” nashriyoti, 2014. - 160 bet.
Qo’shimcha adabiyotlar
7.
Sh. Mirziyoyev Buyuk kelajagimizni mard va olijanob xalqimiz bilan birga quramiz.
Toshkent “O’zbekiston” 2017. 488 b.
8.
Sh. Mirziyoyev. Qonun ustuvorligi va inson manfaatlarini ta’minlash – yurt
taraqqiyoti va xalq farovonligining garovi. O’zbekiston Respublikasi Konstitutsiyasi
qabul qilinganligining 24 yilligiga bag’ishlangan tantanali marosimdagi ma’ruza. 2016-
yil 7-dekabr. Toshkent - “O’zbekiston” - 2017. 32 b.
9.
Mirziyoyev Sh.M. Tanqidiy tahlil, qat’iy tartib-intizom va shaxsiy javobgarlik – har
bir rahbar faoliyatining kundalik qoidasi bo’lishi kerak. O’zbekiston Respublikasi
Vazirlar Mahkamasining 2016 yil yakunlari va 2017 yil istiqbollariga bag‘ishlangan
majlisdagi O’zbekiston Respublikasi Prezidentining nutqi. // Xalq so’zi gazetasi. 2017
yil 16 yanvar, №11.
10.
SH.Mirziyoyev. Erkin va farovon, demokratik O’zbekiston davlatini birgalikda barpo
etamiz. O’zbekiston Respublikasi Prezidenti lavozimiga kirishish tantanali marosimiga
bag‘ishlangan Oliy Majlis palatalarining qo’shma majlisidagi nutqi. Toshkent –
“O’zbekiston”. 2016. 56 b.
Internet resurslar
11. http://mvcsharp.ru/
12. https://docs.microsoft.com/ru-ru/dotnet/csharp/index
13. http://ci-sharp.ru/
Do'stlaringiz bilan baham: |