• return h; } 163 int main() {
  • 13.2. C++ dasturlash tilida xesh jadvallarni realizatsiya qilish
  • Samarqand davlat universiteti o. R. Yusupov, I. Q. Ximmatov, E. Sh. Eshonqulov




    Download 4,61 Mb.
    Pdf ko'rish
    bet90/111
    Sana18.05.2024
    Hajmi4,61 Mb.
    #241929
    1   ...   86   87   88   89   90   91   92   93   ...   111
    Bog'liq
    ALGORITMLAR VA MA‟LUMOTLAR STRUKTURALARI

    #include  
    #include  
    using namespace std; 
     
    long long Heshlash(char s[]) 

    long long h = 0; 
    int base = 37; 
    for(int i=0; i<=strlen(s); i++) 

    h = h* base + s[i] - 61 +1; 

    return h; 



    163 
     
    int main() 

    char s[100]; 
     
    for(int i=1; i<10; i++) 

    cin.getline(s,100); 
    cout<
    cout<


    9-jadval.
    Xesh jadvallardan foydalanish samaradorligi 
    Konteyner / Amal 
    Insert 
    (qoʻshish) 
    Remove 
    (Oʻchirish) 
    Izlash 
    (find) 
    Massiv 
    O(N) 
    O(N) 
    O(N) 
    Roʻyxat 
    O(1) 
    O(1) 
    O(N) 
    Saralangan massiv 
    O(N) 
    O(N) 
    O(logN) 
    Ikkilik 
    qidiruv 
    daraxti 
    O(logN) 
    O(logN) 
    O(logN) 
    Xesh-jadval
    O(1) 
    O(1) 
    O(1) 
    Barcha ma'lumotlar yaxshi bajarilgan konteynerlarni, yaxshi 
    tanlangan xesh funksiyalarini taqdim etdi. 
    Ushbu jadvaldan nega xesh jadvallardan foydalanish kerakligi juda 
    aniq koʻrinib turibdi. Ammo keyin qarama-qarshi savol tugʻiladi: nega 
    ular doimo ishlatilmaydi? Javob juda sodda: har doimgidek, birdaniga 
    hamma narsani olish mumkin emas, ya'ni: ham tezlikdan, ham xotiradan 
    yutib boʻlmaydi. Xesh jadvallari noqulay va ular operatsion jarayonning 


    164 
    asosiy savollariga tezda javob berishlari bilan birga, ulardan foydalanish 
    har doim juda qimmatga tushadi. 
    13.2. C++ dasturlash tilida xesh jadvallarni realizatsiya qilish 
    C++ dasturlash tilida xesh jadvallarni hosil qilish uchun map 
    konteyneri aniqlangan. map konteyner vector, list, deque kabi boshqa 
    konteynerlarga juda o'xshaydi, lekin ozgina farqi mavjud. Bu 
    konteynerga birdaniga ikkita qiymat qo'yish mumkin. Shunday qilib, bu 
    map misolni batafsil ko'rib chiqaylik: 
    #include  
    #include  //map bilan ishlash uchun kutubxonani ulash 
    using namespace std; 
    int main() 

    ///map oshkor initsializatsiyalash 
    map  myFirstMap = {{ "Mother", 37 }, 
    { "Father", 40 }, 
    { "Brother", 15 }, 
    { "Sister", 20 }}; 
    /// initsializatsiyalangan mapni ekranga chiqarish 
    for (auto it = myFirstMap.begin(); it != myFirstMap.end(); ++it) 

    cout << it->first << " : " << it->second << endl; 

    char c; 
    map  mySecondMap; 
    for (int i = 0,c = 'a'; i < 5; ++i,++c) 

    mySecondMap.insert ( pair(c,i) ); 

    /// initsializatsiyalangan mapni ekranga chiqarish 
    for (auto it = mySecondMap.begin(); it != mySecondMap.end(); ++it) 



    165 
    cout << (*it).first << " : " << (*it).second << endl; 

    return 0; 

    Map bilan bogʻliq ba'zi asosiy funksiyalar quyida keltirilgan: 
    begin
    () - iteratorni mapdagi birinchi elementga qaytaradi 
    end
    () - iteratorni mapdagi oxirgi elementdan keyingi nazariy elementga 
    qaytaradi 
    size()
    - mapdagi elementlar sonini qaytaradi 
    max_size
    () - mapda saqlanishi mumkin bo'lgan elementlarning 
    maksimal sonini qaytaradi 
    empty
    () - mapning bo'shligini tekshiradi 

    Download 4,61 Mb.
    1   ...   86   87   88   89   90   91   92   93   ...   111




    Download 4,61 Mb.
    Pdf ko'rish

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    Samarqand davlat universiteti o. R. Yusupov, I. Q. Ximmatov, E. Sh. Eshonqulov

    Download 4,61 Mb.
    Pdf ko'rish