CMPS 2010 - Array və Sırala

Göndərildi: 08.09.2021
Məqalənin müəllifi Adəm Quliyev

Bu laboratoriyanın məqsədi 1D bir sıra axtarmaq, sıralamaq və dəyişdirməkdir. Bu laboratoriya Ch. 8 və Lab 7 -dən bəzi funksiyalardan istifadə edə bilərik.

Proqramınızı 2010/9/Odin -də yazın . Bu adı lab9.cpp. Aşağıdakı bütün funksiyaları yerinə yetirən tək bir proqram yazacaqsınız.

Əsas () funksiyası

Ölçüsü 25 olan bir tamsayı massivi yaradın. Proqramın əvvəlində serialınız təsadüfi ədədlərlə doldurulsun deyə loop etmədən əvvəl random () funksiyasını çağırın.

Lab 7-dəki menyuya bənzər bir işləmə döngəsi və bir keçid qutusu istifadə edərək bir menyu yaradın.

Ekran funksiyası.

'0' seçimi seçilsə, cari serialı göstərin. Lab 7 -dən görüntü funksiyanızdan istifadə edə bilərsiniz.

Funksiya prototipi:boş ekran (int arr [], int ölçüsü); və ya boş ekran (int *arr, int size);

1. Unikal Təsadüfi Nömrələr

'1' seçimi seçilsə, massivi yeni ədədlər dəsti ilə doldurun və göstərin. [5, 50] aralığında özünəməxsus ədədlərlə dolduran təsadüfi () funksiyası yaradın. Nömrələrin təkrarlanmasına icazə verilmir. (İpucu: Ch.8 -də xətti axtarış alqoritminə baxın və necə işlədiyini görün.) Lab 7 təsadüfi funksiyanızla eyni funksiya parametrlərindən istifadə edə bilərsiniz.

Xatırlatma:Bu rand () funksiyasının formatıdır: rand % (interval) + dəq

Funksiya prototipi:void təsadüfi (int *arr, int size); və ya boş təsadüfi (int arr [], int size, int min, int max);

2. Axtarış Alqoritmləri

    Tapmağa çalışdığınız nömrənin mövqeyini qaytaran linear_search funksiyası yaradın. Nömrə tapılmazsa, axtarış funksiyası -1 döndürməlidir.

Funksiya prototipi:int linear_search (int *arr, int ölçüsü, int sayı);

Funksiya prototipi:int binary_search (int *arr, int size, int number);

3. Dizinizi sıralayın.

    Dizini artan sırada sıralayan bir baloncuk sıralama funksiyası yaradın.

4. Axtarış & Faktları Sırala

  1. Xətti Axtarış [ edir |məlumatların sifariş edilməsini tələb etmir].
  2. Xətti Axtarış ən pis halda [ O (n) | O (n^2) | O (giriş n)].
  3. İkili Axtarış [ edir |məlumatların sifariş edilməsini tələb etmir].
  4. İkili Axtarış [ O (n) |ən pis halda komplextiyasına malikdir O (n^2) |O (giriş n)].
  5. [ Xətti | İkili Axtarış] [ Xətti | İkili] Məlumat sifariş edilmədikdə axtarın.
  6. [ Xətti | İkili Axtarış] [ Xətti | İkili] Məlumat sifariş edildikdə axtarın.
  7. Baloncuk çeşidi [ səmərəli | səmərəsiz] böyük seriallar üçün.
  8. [ Baloncuk | seçim] sıralama elementləri bir anda bir elementə köçürür.
  9. [ Baloncuk | seçim] sort maddələri dərhal serialdakı son mövqeyinə keçir.

5. Dizinizi dəyişdirin.(2 və ya daha çoxunu seçin)

Hansı axtarış alqoritmindən istifadə etmək istədiyinizə və axtarmadan əvvəl sıra sıralamalı olduğunuza qərar verməlisiniz. Aşağıdakı əməliyyatların hər biri üçün bir funksiya yaza bilərsiniz.

Qeyd:Hər iki axtarışdan istifadə edərək aşağıdakı vəzifələri yerinə yetirmək istəyirsinizsə, '5'-'8' halları üçün xətti və ya ikili axtarışlar etməyə imkan verən '9' vəziyyətinin yaradılması isteğe bağlıdır. '9' seçimi seçildikdə, menyunuz "5-8 üçün İkili Axtarış" və ya "5-8 üçün Xətti Axtarış" deyəcək şəkildə yenilənəcək. Proqramınızın sağ hissələrinə aşağıdakı kodları əlavə edərək bunu edə bilərsiniz:

Əvəz edin

'5' seçimi seçilsə, cari serialı göstərin, istifadəçidən hansı nömrəni əvəz etmək istədiyini və hansı nömrəni əvəz edəcəyini soruşun və yeni massivi göstərin. Əvəz etmək istədikləri nömrə dizidə olmalıdır. Ayrıca, seriala daxil etmək istədikləri nömrə unikal olmalıdır.

Mübadilə edin

'6' seçimi seçilsə, cari serialı göstərin, istifadəçidən iki ədədin dəyişdirilməsini istəyin və yeni serialı göstərin. Girdikləri nömrələr serialda olmalıdır. Girdikləri nömrələr eyni ola bilməz.

Daxil et & Shift

'7' seçimi seçilsə, cari massivi göstərin, istifadəçidən daxil ediləcək rəqəmi və yerləşdiriləcəyi indeksi istəyin və yeni massivi göstərin. Daxil edilən nömrə unikal olmalıdır. Daxil edilən indeks etibarlı bir indeks olmalıdır. İstifadəçinin daxil etdiyi indeksdən başlayaraq, massivdəki elementlər əvvəlki indeksindən 1 indeks mövqeyini daha çox dəyişməlidir. Dizidə 26 nömrəyə yer qalmayacaq, buna görə indeks 24 -də olan element yox olacaq.

Sil & Shift

'8' seçimi seçilsə, cari serialı göstərin, istifadəçidən silinəcək bir rəqəm istəyin və yeni serialı göstərin. Silinəcək nömrə mövcud olmalıdır. Silinmiş nömrənin indeksindən başlayaraq, massivdəki elementlər əvvəlki indekslərindən 1 indeks mövqeyini daha az dəyişməlidir. Yeni 25 -ci nömrə üçün yer olacaq, buna görə indeks 24 -də yeni bir element yaratmalısınız. Bu yeni nömrə unikal olmalıdır.

6. Artan Hətta Düşən Tək

'A' seçimi seçilsə, cari serialı göstərin və yeni düzülmüş serialı göstərin. Əvvəlcə serialın cütlüklərini və əmsallarını ayırmalısınız. Sonra, cütləri artan sırada və əmsalları azalan qaydada təşkil etməlisiniz. Nəhayət, ön tərəfdə artan bərabərliklər və arxada enmə əmsalları ilə onları yenidən bir sıra halına salın. (Bunun üçün bir funksiya yarada bilərsiniz və ya bunu main () funksiyanızda edə bilərsiniz.)

Aşağıdakı mümkün bir həll yoluna nəzər salmadan əvvəl bunu özünüz sınayın.

2D Array Axtarış və Sırala

  1. Satır ölçüsü 3 və sütun ölçüsü 10 olan 2D bir sıra yaradın.
  2. [-15, 15] aralığında 2D dizinizi bənzərsiz təsadüfi ədədlərlə dolduran bir funksiya yaradın. 2D dizinizi axtarın. Yaradılan təsadüfi ədəd artıq mövcuddursa, yeni təsadüfi ədəd yaradın. Təsadüfi ədəd hələ mövcud deyilsə, təsadüfi sayını 2D sırasına qoyun.

Funksiya Prototipi:void random2D (int arr2D [r_size] [c_size], int r_size, int c_size);

Funksiya Prototipi:void display2D (int arr2D [r_size] [c_size], int r_size, int c_size)

Funksiya Prototipi:boş bubble2D_asc (int arr2D [r_size] [c_size], int r_size, int c_size)