2 o'lchamli massivlar
7. Matrisani jadval ko'rinishida chizing.
a) For(i=1,i<=n/2;i++)
{for(j=1;j<=m ; j++)
cout<b) for(im)for(j=1…….)
if(jelse cout<8. Matritsalarni qo'shish
For(i=1,i<=n;i++)
for(j=1;j<=m ; j++)
c[i,j]=a[i,j]+b[i,j]}.
9. Ko'paytirish
For(i=1,ifor(j=1;j<=n;n=1)
{S=0;
For(k=1,k<=n;k++)
S+=a[i,k]*b[k,j];
c[I,j]=S;
}
Massivlarni navlarga ajratish
Navlarga ajratish - bu berilgan ko’plab obyektlarni biron-bir belgilangan tartibda qaytadan guruhlash jarayoni.
Massivlarning navlarga ajratilishi tez xarakatlanuvchiligiga ko’ra farqlanadi. Navlarga ajratishning n*n ta qiyoslashni talab qilgan oddiy usuli va n*In(n) ta qiyoslashni talab qilgan tez usuli mavjud. Oddiy usullar navlarga ajratish tamoyillarini tushuntirishda qulay hisoblanadi, chunki sodda va kalta algoritmlarga yega. Murakkablashtirilgan usullar kamroq sonli operasiyalarni talab qiladi, biroq operasiyalarning o’zi murakkabroq, shuning uchun uncha katta bo’lmagan massivlar uchun oddiy usullar ko’proq samara beradi.
Oddiy sullar uchta asosiy kategoriyaga bo’linadi:
- oddiy kiritish usuli bilan navlarga ajratish;
- oddiy ajratish usuli bilan navlarga ajratish;
- oddiy almashtirish usuli bilan navlarga ajratish
Тартиблаш усулларидан бири бўлиб «пуфакча» усули ҳисобланади. Бу алгоритмнинг асосий ғоясини ёзиш учун тартибланиши керак бўлган ёзувлар вертикал жойлашган массивда сақланади деб фараз қиламиз. Калит майдоннинг кичик қийматли ёзувлари «енгил» ва шунинг учун пуфакча каби улар юқорига «сузиб чиқади». Массив бўйлаб биринчи ўтишда массивнинг биринчи ёзуви олинади ва унинг калити навбатма-навбат кейинги ёзувларнинг калитлари билан солиштириб борилади. Агар нисбатан «оғир» калитли ёзувлар учраса, у ҳолда бу ёзувлар жойини алмаштиради. Нисбатан «енгил» ёзувлар учраганда бу ёзув таққослаш учун этолон бўлади ва кейинги барча ёзувлар шу калит билан солиштирилади. Натижада энг кичик қийматли калит массивнинг энг юқорисига чиқади. Массив бўйлаб иккинчи ўтишда массивнинг массивни биринчи ўтишда топилган ёзувдан кейин жойлашган оғирлиги бўйича иккинчи калит олинади. Массив бўйлаб иккинчи ва кейинги ўтишларда олдинги ўтишларда топилган ёзувларни кўриб чиқиш шарт эмас, чунки улар қолган ёзувларга қараганда кичик калитларга эга. Бошқача қилиб айтганда, t – ўтишда i позиция юқорида турган элементлар текширилмайди. 8.1-дастурда ушбу алгоритм келтирилган.
«пуфакча» алгоритми
(1) for i:= I to n - 1 do
(2) for j:= 1 downto i + 1 do
(3) if A[j].key < A[j - 1].key then
(4) swap(A[j], A[j - 1])
swap процедураси ёзувларнинг ўрнини алмаштириш учун кўплаб тартиблаш алгоритмларида ишлатилади, унинг коди қуйидаги дастурда келтирилган.
8.1-дастур. swap процедураси
procedure swap ( var x, у: recordtype )
{swap х ва у ёзувларнинг ўрнини алмаштиради}
var
temp: recordtype;
begin
temp:= x;
x:= y;
y:= temp;
end; { swap }
Do'stlaringiz bilan baham: |