Massiv elementlarini tartiblash
M assivlar haqidagi m asalalar ichida eng ko ‘p uchraydigani bu
uning elementlarini o ‘sish yoki kamayish tartibida tartiblash masa-
lasidir. Bu muammoni hal qilishning usullari k o ‘p b o ‘lib, ulardan
birortasini boshqasidan ustun q o ‘yib bo ‘lmaydi. Har bir usul element
lar joy lashuviga k o ‘ra boshqasidan yaxshi b o ‘lishi mumkin.
1-usul. A[l\N ] massiv elementlarini o ‘sish tartibida tartiblash
talab qilingan bo‘lsin.
Berilgan massiv elementlari ichidan eng kichigini topib, uning
o ‘m i 1-element bilan almashtiriladi. Shu bilan 1-element tartiblandi.
Endi 2-element tartiblanadi. Buning uchun qolgan elementlar ichi
dan eng kichigi topilib, uning o ‘mi 2-element bilan almashtiriladi
va hokazo. Bu jarayon N -1 marta takrorlanganda tartiblash ham
tugaydi. Bu usul uchun kod quyidagicha yoziladi:
# include
int mainQ
{
int min, a, j, k;
int i; int b [ 10]={56, 88, 75, 65, 78, 82, 79, 81, 68, 72};
f o r (i=0; i<=8; i+ + ) {
m in=b[i]; k=I;
f o r ( j= i+ l; j< = 9 ; j + + ) if (b[j]< b=""><>
a= b[i]; b[i]=b[k]; b[k]=a;j
f o r (i=0; i<=9; i+ +)
c o u t « b [ i ] « ” , “;
return 0;
}
Bu usul eng kichik elementni chiqarish usuli deyiladi.
2-usul. Ko ‘piksim on usul. Bu usulning asosiy g ‘oyasi yengil
elementlarni yuzaga chiqarishdan iborat bo"lib, xuddi suv ichidan chi-
qayotgan pufakchalam i eslatadi. Yengil elementlar “vazni” darajasida
94
borgan sari yuqorilab boradi. Buning ucliun birinchi elementdan
boshlab, hamma elementlari o ‘z yonida turgan element bilan taqqos-
lanadi. Agar a[i] > a[i + 1] bo ‘lsa, u holda bu elementlar o ‘mi o ‘zaro
almashtiriladi. Tekshirish yana boshidan boshlanadi.
# include < io stream .h >
int mainQ
{ int a, i, k;
int b [1 0 ]= {5 6 , 88, 75, 65, 78, 82, 79, 81, 68, 72};
f o r (i= 0 ; i< = 8 ; i+ + )
i f ( b [ i ] > b [ i + l j ) { a = b [ij; b [ i] = b [ i + l] ; b [ i + l ] = a ; i = - l ;}
f o r (i= 0 ; i < —9; i+ + )
c o u t « b [ i ] «
return 0;
i
j
Massivlardan satrlarni qayta ishlashda foydalanish
Biz yuqorida massivlardan satrlarni ham qayta ishlash uchun
foydalanish mumkinligi haqida fikr bildirgan edik. Buning uchun biz-
ga belgili tipdagi massivlar qo ‘l keladi.
Belgili massivlami ikki xil usulda e ’lon qilish mumkin:
a) char satr[] = “first
b) char sa tr[5 ]= { f \ 7 V
‘s
‘t \ 0 ’};
C++ tilida a-usul bilan e ’lon qilingan m assiv elementlarining
soni k o ’rsatilmagan bo ‘lsa ham qiymatidagi belgilar sonidan kelib
chiqqan holda satr massivini 6 elementli deb qabul qilinadi. Oxirgi
elementni C++ tili to ‘g ‘ridan-to‘g ‘ri nol element (\0) sifatida tan oladi
va u satm ing tugaganligini anglatadi. Satrlarni ifodalovchi barcha
belgili m assivlar ana shu belgi bilan tugashi shart.
Satr (yoki matn) belgili m assiv 1oo‘lgani uchun uning alohida
elementlariga sonli massivlardagi kabi indekslardan foydalangan hol
da murojaat qilish mumkin. Masalan, yuqoridagi misollarda satr[0]
element uf harfiga, satr[6 ] esa nol elementga (“\0”) mos keladi.
Shuningdek, satrli m a’lumotlami cin operatori yordamida
klaviatura orqali ham kiritish mumkin. Masalan,
char satr[20];
buyrug’i uzunligi 20 ta, eng yuqori indeksi 19 b o lg an belgili massivni
e ’lon qiladi. Unga klaviatura orqali qiymat berish uchun
c in » s a t r ;
buyrug’idan foydalanish mumkin. Kompyuter bu buyruqqa javoban
klaviaturadan kiritilgan satming oxiriga “\0” belgisini qo‘shib o ‘qiydi.
Shuni yoddan chiqarmaslik kerakki, klaviaturadan kiritilgan bu satr-
ning uzunligi 20 dan kichik bo’lishi mumkin, aks holda, dastumi
bajarish vaqtida xatolik yuzaga keladi.
Belgili massiv elementlarini cout yordamida ekranga chiqarish
ham mumkin.
|