931-20 _ Yangiboyeva Komila
1-Laboratoriya ishi.
Mavzu: Chiziqli qidiruv
Ishdan maqsad. Chiziqli qidiruv algoritmini o’rganish va dasturini yozish.
Nazariy qism.
Dasturlashda eng ko’p qo’llaniladigan amallardan biri bu – ma’lumotlarni qidiruv. Qidiruvning birnechta asosiy variantlari mavjud bo’lib, ular uchun har xil algoritmlar yaratilgan.
Chiziqli qidiruv – ixtiyoriy funksiyaning qandaydir kesmadagi berilgan qiymatini qidirishga aytiladi. Bu algoritm oddiy algoritm hisoblanib, boshqa algoritmlardan, masalan binar qidiruvdan farqli tamoni funsiyaga hecha qanday cheklanish qo’yilmaydi va amalga oshirish oddiy hisoblanadi.
Chiziqli qidiruv algoritmi
Funksiya qiymatini izlash navbatdagi qiymatni (odatda chapdan o’nga argument oshishi tartibida amalga oshiriladi)oddiy taqqoslash orqali tekshiriladi. Masala ikki xil qo’yilishi mumkin: 1) Birinchi topilgan argumentni topish 2) Barcha argumentlarni topish.
Agar funkisya sifatida massiv argument sifatida massiv indeksi qo’llanilsa u holda chiziqli qidiruv natijasida berilgan massivdan bo’lgan shunday i indekslarni topish lozim.
Massiv: 45, 12 , 89, 12, -78, 12;
12 sonining pozitsiyalari 2, 4, 6;
Chiziqli qidiruv.
Oddiy chiziqli qidiruvda massivning har bir elementi bilan birma-bir tekshirib chiqiladiz.
int function LinearSearch (Array A, int L, int R, int Key);
begin
for X = L to R do
if A[X] = Key then
return X
return -1; // элемент не найден
end;
Bunda L va R o’zgruvchilar element qidiriladigan oraliq.
Ishlash vaqti.
Agar massivdagi birinchi uchraydigan indeks izlanayotgan bo’lsa u holda chiziqli qidiruv algoritmining ishlash vaqti:
Eng yaxshi holatda: O(1). Ya’ni izlanayotgan element qaralayotgan intervalning boshida bo’lsa.
Eng yomon holatda: O(n). Ya’ni izlanayotgan element izlanayotgan intervalning oxirida bo’lsa yoki umuman uchramasa.
n – izlanayotgan intervaldagi elementlar soni. Yuqoridagi misol uchun n=R-L+1.
Chiziqli qidiruv algoritmi qidirilayotgan interval uzunligi kichik bo’lgan vaqtdagina effektiv bo’ladi.
5-topshiriq
Bir o’lchamli sonli massiv berilgan. Sizning vazifangiz massivning uning minimalelementidan katta va maksimal elementidan kichik elementlarining sonini topishdaniborat.
Kiruvchi ma’lumotlar
Birinchi qatorda n soni – massiv elementlari soni berilgan(1≤n≤105). Ikkinchi qatordan ta son – massiv elementlari bitta probel bilan ajratib berilgan. Massiv elementlari butunva modul jihatdan 109 dan oshmaydi.
Chiquvchi ma’lumotlar
Birinchi qatorda bitta sonni – masalaning javobini chiqaring.
Misollar
№
|
Kiruvchi ma’lumotlar
|
Chiquvchi ma’lumotlar
|
1
|
4
4 7 4 7
|
0
|
2
|
5
5 4 3 2 1
|
3
|
#include
using namespace std;
int main()
{
int n,mn,mx,cht=0;
cout<<"massivni o'lchamini kiriting: "; cin>>n;
int a[n];
cout<<"massiv elementalrini kiriting:\n";
for(int i=0; icin>>a[i];
mn=a[0]; mx=a[0];
for(int i=1; i{
if(mn>a[i])
mn=a[i];
if(mxmx=a[i];
}
for(int i=0; i{
if(a[i]>mn and mx>a[i])
cht++;
}
cout<<"Min va Max elementlar orasidagi soni = "<return 0;
}
Do'stlaringiz bilan baham: |