4. Dinamik ma‟lumotlar tuzilmasi haqida ma’lumot bering


* 2 ^ 30/52 ≈ 330,382,099 ta tugun


Download 418.97 Kb.
bet20/27
Sana22.01.2023
Hajmi418.97 Kb.
#1110285
1   ...   16   17   18   19   20   21   22   23   ...   27
Bog'liq
algoritm — копия (2)

16 * 2 ^ 30/52 ≈ 330,382,099 ta tugun

1.000.000.000 yozuvlardan iborat lug'atni qanday saqlash kerak?



  • Facebook foydalanuvchilari soni (2013 yil iyul):

  • 1 200 000 000

  • Google Gmail foydalanuvchilari soni (2012 yil iyun):

  • 425,000,000

  • VKontakte foydalanuvchilari soni (2013 yil fevral):

  • 43,000,000

  • Yechim: tashqi xotiradan foydalaning - HDD / SSD disklari, tarmoq xotirasi

68. B-daraxtlar ustida amallar haqida tushuncha bering.
B-daraxtlar ustida amallar
 Barcha amallarda biz quyidagilarni qabul qilamiz:
- B daraxtining ildizi doimo operativ xotirada bo'ladi
- DiskRead va DiskWrite protseduralari diskka ma'lumotlarni o'qish va yozish uchun ishlatiladi
B daraxti tashqi xotiraga murojaatlar sonini minimallashtiradi (DiskRead, DiskWrite-ga)
69. Heapsort algoritmi haqida tushuncha bering.

Heapsort (Heapsort, "Heap sorting") - n elementlarni saralashda O(nlogn) amallarda eng yomon, o'rtacha va eng yaxshi (ya'ni kafolatlangan) holda ishlaydigan saralash algoritmi. Ishlatiladigan qo'shimcha xotira miqdori massiv kattaligiga bog'liq emas (ya'ni O (1)).
Ushbu saralashni pufaksimon saralashning rivojlantirilgan ko’rinishi deb qarash mumkin.
Eng yomon vaqt -
Eng yaxshi vaqt -
O’rtacha vaqt -

Heap-Sort algoritmini realizatsiya qilish

#include
#include

using namespace std;


int main()


{
srand(time(NULL));
int const n = 100;
int a[n];
for ( int i = 0; i < n; ++i )
{
a[i] = rand()%1000;
cout << a[i] << " ";
}
//massivni to'ldirish
//-----------Saralash------------//
//O'sish bo'yicha saralash.
int sh = 0; //смещение
bool b = false;
for(;;) //Sikl cheksiz davom etadi
{
b = false;
for ( int i = 0; i < n; i++ )
{
if( i * 2 + 2 + sh < n )
{
if( ( a[i + sh] > /*<*/ a[i * 2 + 1 + sh] ) || ( a[i + sh] > /*<*/ a[i * 2 + 2 + sh] ) )
{
if ( a[i * 2 + 1 + sh] < a[i * 2 + 2 + sh] )
{
swap( a[i + sh], a[i * 2 + 1 + sh] );
b = true;
}
else if ( a[i * 2 + 2 + sh] < a[ i * 2 + 1 + sh])
{
swap( a[ i + sh], a[i * 2 + 2 + sh]);
b = true;
}
}
// oxirgi ikki element uchun qo'shimcha tekshirish
// ushbu tekshiruv yordamida siz piramidani saralashingiz mumkin
// faqat uchta elementdan iborat
if( a[i*2 + 2 + sh] < /*>*/ a[i*2 + 1 + sh] )
{
swap( a[i*2+1+sh], a[i * 2 +2+ sh] );
b = true;
}
}
else if( i * 2 + 1 + sh < n )
{
if( a[i + sh] > /*<*/ a[ i * 2 + 1 + sh] )
{
swap( a[i + sh], a[i * 2 + 1 + sh] );
b = true;
}
}
}
if (!b) sh++;
if ( sh + 2 == n ) break;
} //Saralash tugatildi

//Natijani chiqarish


cout << endl << endl;
for ( int i = 0; i < n; ++i ) cout << a[i] << " ";
// getch();
return 0;
}


Download 418.97 Kb.

Do'stlaringiz bilan baham:
1   ...   16   17   18   19   20   21   22   23   ...   27




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling