|
Massiv elementlarini tartiblash
|
bet | 71/135 | Sana | 22.05.2024 | Hajmi | 15,08 Mb. | | #250347 |
Bog'liq Fizik jarayonlarni kompyuterda modellashtirish 3. Massiv elementlarini tartiblash
Massivlar haqidagi masalalar ichida eng ko‘p uchraydigani bu uning elementlarini o‘sish yoki kamayish tartibida tartiblash masalasidir. Bu muammoni hal qilishning usullari ko‘p bo‘lib, ulardan birortasini boshqasidan ustun qo‘yib bo‘lmaydi. Har bir usul elementlar joylashuviga ko‘ra boshqasidan yaxshi bo‘lishi mumkin.
A[1:N] massiv elementlarini o‘sish tartibida tartiblash talab qilingan bo‘lsin.
Berilgan massiv elementlari ichidan eng kichigini topib, uning o‘rni 1-element bilan almashtiriladi. Demak, 1-element tartiblandi. Endi 2-element tartiblanadi. Buning uchun qolgan elementlar ichidan eng kichigi topilib, uning o‘rni 2-element bilan almashtiriladi va hokazo. Bu jarayon N-1 marta takrorlanganda tartiblash ham tugaydi. Bu usul uchun kod quyidagicha yoziladi:
1 # include
2 int main()
3 {
4 int min, a, j, k;
5 int I; int b[10]={56, 88, 75, 65, 78, 82, 79, 81, 68, 72};
6 for (i=0; i<=8; i++) {
7 minqb[i]; k=I;
8 for (j=i+1; j<=9; j++) if (b[j]
9 a=b[i]; b[i]=b[k]; b[k]=a;}
10 for (i=0; i<=9; i++)
11cout<
12 return 0;
13 }
Bu usul eng kichik elementni chiqarish usuli deyiladi.
2-usul. Ko‘piksimon usul. Bu usulning asosiy g‘oyasi yengil elementlarni yuzaga chiqarishdan iborat bo‘lib, xuddi suv ichidan chiqayotgan pufakchalarni eslatadi. Yengil elementlar “vazni” darajasida borgan sari yuqorilab boradi. Buning uchun birinchi elementdan boshlab, hamma elementlari o‘z yonida turgan element bilan taqqoslanadi. Agar bo‘lsa, u holda bu elementlar o‘rni o‘zaro almashtiriladi. Tekshirish yana boshidan boshlanadi.
1 # include
2 int main()
3 { int a, I, k;
4 int b[10]={56, 88, 75, 65, 78, 82, 79, 81, 68, 72};
5 for (i=0; i<=8; i++)
6 if (b[i]>b[i+1]) {a=b[i]; b[i]=b[i+1]; b[i+1]=a; i=-1;}
7 for (i=0; i<=9; i++)
8 cout<
9 return 0;
10 }
|
| |