O’ZBEKISTON RESPUBLIKASI AXBOROT TEXNOLOGIYALARI VA KOMMUNIKATSIYALARINI RIVOJLANTIRISH VAZIRLIGI MUHAMMAD AL-XORAZMIY NOMIDAGI TOSHKENT AXBOROT TEXNOLOGIYALARI UNIVERSITETI
ALGORITMLARNI LOYIHALASH FANIDAN
LABORATORIYA ISHI Mavzu: Murakkab malumotlar tuzilmalari: Ustuvor navbatlar
Guruh: CAL020-L2 Bajardi: Yuldashev Sherzod Tekshirdi: Ismailov Ilxom
Toshkent 2020
Mavzu: Murakkab malumotlar tuzilmalari: Ustuvor navbatlar
16 - Variant
1 – topshiriq.
Berilgan variant bo’yicha C++ (Python, Java) tilida har uchala saralash metodini bajaring va jadval shaklida solishtirib analiz qiling.
Ro’yhat bo’yicha variant nomeri
|
Massivni to’ldirish
|
Saralash metodi
|
Har bir metod uchun massivdagi elementlarning soni
|
16,17,18
|
Tasodifiy elementlar bilan to’ldirilgan massiv
|
Sheyker
Tezkor
Surish
|
450
|
1800
|
5500
|
2 – topshiriq
C++ (Python, Java) tilida quyida keltirilgan amallarni bajargan holda ustuvor navbat tashkil qiling:
Berilgan N ta elementdan iborat ustuvor navbat hosil qiling;
Yangi element qo’shing;
Eng katta elementni yechib oling;
Berilgan qandaydir elementning prioritetini o’zgartiring;
Berilgan qandaydir elementni yechib oling;
Ikkita ustuvor navbatni birlashtiring.
Dastur kodi:
Surish saralash metodi
#include
#include
template< class T >
void surish(T* arr, int size)
{
T tmp;
for(int i = 0; i < size - 1; ++i) // i- o'tish nomeri
{
for(int j = 0; j < size - 1; ++j) // ichki o'tish sikli
{
if (arr[j + 1] < arr[j])
{
tmp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = tmp;
}
}
}
}
using namespace std;
int main(){
ios::sync_with_stdio(false); // tezroq chop etish uchun oqimlar sinxronizatsiyasini o'chirish
int a[5500];
srand(time(NULL)); // tasodiflarni yangilash
cout<<"Massiv:\n ";
for(int i=0;i<5500;i++)
{
a[i]=rand()%5500; // tasodifiy qiymat
cout<
}
cout<<"\n\n#############Surish orqali saralandi###################### \n";
surish(a,5500);
for(int i=0;i<5500;i++)
{
cout<
}
return 0;
}
Tezkor saralash metodi
#include
#include
using namespace std;
template
void tezkor(T* a, long N) {
long i = 0, j = N;
T temp, p;
p = a[ N>>1 ]; //markaziy element
//bo'linish jarayoni
do {
while ( a[i] < p ) i++;
while ( a[j] > p ) j--;
if (i <= j) {
temp = a[i]; a[i] = a[j]; a[j] = temp;
i++; j--;
}
} while ( i<=j );
// Saralash kerak bolgan paytdagi rekursiv chaqiruv
if ( j > 0 ) tezkor(a, j);
if ( N > i ) tezkor(a+i, N-i);
}
int main(){
ios::sync_with_stdio(false); // tezroq chop etish uchun oqimlar sinxronizatsiyasini o'chirish
int a[1800];
srand(time(NULL)); // tasodiflarni yangilash
cout<<"Massiv:\n ";
for(int i=0;i<1800;i++)
{
a[i]=rand()%1800;
cout<
}
cout<<"\n\n#############Tezkor saralash orqali saralandi###################### \n";
tezkor(a,1800);
for(int i=0;i<1800;i++)
{
cout<
}
return 0;
}
Do'stlaringiz bilan baham: |