fbpx
Wikipedia

İnterpolyasiya ilə axtarış

İnterpolyasiya ilə axtarış (ing. Interpolation search) — Artan və ya azalan sıra ilə düzülmüş massivdə verilmiş elementin tapılması alqoritmidir.

İşləmə prinsipi

Eyni ilə ikili axtarış alqoritminin sxemi üzrə qurulur. Yeganə fərq ondan ibarətdir ki, massiv hər addımda ikiyə tən ortadan deyil, cari intervalın uclarındakı qiymətlərdən asılı olaraq xətti interpolyasiya ilə tapılmış mövqedən bölünür. Hesablamaya sərf olunan vaxt baxımından intervalın ikiyə ortadan bölunməsi ilə interpolyasıyanın hesablanması arasında fərq ciddi olmadığı üçün, bu intervalın daha böyük sürətlə yığılmasına gətirir. Massivdəki elementlərin sayı N olarsa, bir elementin mövqeyinin tapılması üçün orta hesabla   müqayisə sərf edilər. Ən pis halda (məsələn verilənlər eksponsional xarakter daşıdıqda) tələb edilən əməliyatların sayı  -ə çata bilər.

C++ proqramlaşdırma dilində icrasına nümunə

#include <iostream> #include <stdlib.h> /* srand(), rand(), RAND_MAX */ #include <time.h> /* time() */ #include <locale.h> /* setlocale() */  using namespace std;  const int n = 12; /* Massivin ölçüsü */  /* Artan sıra ilə düzülmüş massivdə interpolyasiya ilə axtarış funksiyasına nümunə */ int InterpolyasiyaIleAkhtar(int massiv[], int say, int axtarilan) {  int sol = 0;  int sag = say - 1;   while ((massiv[sag] != massiv[sol]) && (axtarilan >= massiv[sol]) && (axtarilan <= massiv[sag]))  {  int yeniMovqe = sol + ((axtarilan - massiv[sol]) * (sag - sol) / (massiv[sag] - massiv[sol]));   if (massiv[yeniMovqe] == axtarilan)  return yeniMovqe;   if (massiv[yeniMovqe] < axtarilan)  sol = yeniMovqe + 1;  else  sag = yeniMovqe - 1;  }   if (axtarilan == massiv[sol])  return sol;   return -1; }  /* Massivi sıralamaq üçün tələb olunan müqaisə funksiyası. */ /* Bu funksiya massivi artan sıra ilə düzür. */ int compare(const void* elem1, const void* elem2) {  if (*((int*)elem1) > *((int*)elem2))  return 1;   if (*((int*)elem1) < *((int*)elem2))  return -1;   return 0; }  /* Alqoritminin istifadəsinə nümunə */ int main() {  int massiv[n];  int i;   setlocale(LC_ALL, ".utf8");  srand((unsigned)time(NULL));   cout << "Massivdəki ədədlərin ilkin təsadüfi sırası:\t";  for (i = 0; i < n; i++)  {  massiv[i] = 100.0 * rand() / (RAND_MAX + 1);  cout << massiv[i] << " ";  }  cout << endl;   /* Alqoritm ancaq sıralanmış massivlərlə işləyir */  qsort(massiv, n, sizeof(int), compare);   cout << "Massivdəki ədədlər sıralandıqdan sonra:\t\t";  for (i = 0; i < n; i++)  cout << massiv[i] << " ";  cout << endl;   while (true)  {  int axtarilan;   cout << endl << "Proqramdan çıxmaq üçün mənfi, sırasının tapilması üçün isə hər hansı bir digər ədəd daxil edin: ";  cin >> axtarilan;   if (axtarilan < 0)  break;   int cavab = InterpolyasiyaIleAkhtar(massiv, n, axtarilan);   if (cavab < 0)  cout << "Cavab tapilmadi." << endl;  else  cout << "Sıra N=: " << cavab + 1 << endl;  } } 

Həmçinin bax

interpolyasiya, ilə, axtarış, interpolation, search, artan, azalan, sıra, ilə, düzülmüş, massivdə, verilmiş, elementin, tapılması, alqoritmidir, işləmə, prinsipi, redaktəeyni, ilə, ikili, axtarış, alqoritminin, sxemi, üzrə, qurulur, yeganə, fərq, ondan, ibarət. Interpolyasiya ile axtaris ing Interpolation search Artan ve ya azalan sira ile duzulmus massivde verilmis elementin tapilmasi alqoritmidir Isleme prinsipi RedakteEyni ile ikili axtaris alqoritminin sxemi uzre qurulur Yegane ferq ondan ibaretdir ki massiv her addimda ikiye ten ortadan deyil cari intervalin uclarindaki qiymetlerden asili olaraq xetti interpolyasiya ile tapilmis movqeden bolunur Hesablamaya serf olunan vaxt baximindan intervalin ikiye ortadan bolunmesi ile interpolyasiyanin hesablanmasi arasinda ferq ciddi olmadigi ucun bu intervalin daha boyuk suretle yigilmasina getirir Massivdeki elementlerin sayi N olarsa bir elementin movqeyinin tapilmasi ucun orta hesabla l o g l o g N displaystyle log log N muqayise serf ediler En pis halda meselen verilenler eksponsional xarakter dasidiqda teleb edilen emeliyatlarin sayi O N displaystyle O N e cata biler C proqramlasdirma dilinde icrasina numune Redakte include lt iostream gt include lt stdlib h gt srand rand RAND MAX include lt time h gt time include lt locale h gt setlocale using namespace std const int n 12 Massivin olcusu Artan sira ile duzulmus massivde interpolyasiya ile axtaris funksiyasina numune int InterpolyasiyaIleAkhtar int massiv int say int axtarilan int sol 0 int sag say 1 while massiv sag massiv sol amp amp axtarilan gt massiv sol amp amp axtarilan lt massiv sag int yeniMovqe sol axtarilan massiv sol sag sol massiv sag massiv sol if massiv yeniMovqe axtarilan return yeniMovqe if massiv yeniMovqe lt axtarilan sol yeniMovqe 1 else sag yeniMovqe 1 if axtarilan massiv sol return sol return 1 Massivi siralamaq ucun teleb olunan muqaise funksiyasi Bu funksiya massivi artan sira ile duzur int compare const void elem1 const void elem2 if int elem1 gt int elem2 return 1 if int elem1 lt int elem2 return 1 return 0 Alqoritminin istifadesine numune int main int massiv n int i setlocale LC ALL utf8 srand unsigned time NULL cout lt lt Massivdeki ededlerin ilkin tesadufi sirasi t for i 0 i lt n i massiv i 100 0 rand RAND MAX 1 cout lt lt massiv i lt lt cout lt lt endl Alqoritm ancaq siralanmis massivlerle isleyir qsort massiv n sizeof int compare cout lt lt Massivdeki ededler siralandiqdan sonra t t for i 0 i lt n i cout lt lt massiv i lt lt cout lt lt endl while true int axtarilan cout lt lt endl lt lt Proqramdan cixmaq ucun menfi sirasinin tapilmasi ucun ise her hansi bir diger eded daxil edin cin gt gt axtarilan if axtarilan lt 0 break int cavab InterpolyasiyaIleAkhtar massiv n axtarilan if cavab lt 0 cout lt lt Cavab tapilmadi lt lt endl else cout lt lt Sira N lt lt cavab 1 lt lt endl Hemcinin bax RedakteAxtaris alqoritmleriMenbe https az wikipedia org w index php title Interpolyasiya ile axtaris amp oldid 5552747, wikipedia, oxu, kitab, kitabxana, axtar, tap, hersey,

ne axtarsan burda

, en yaxsi meqale sayti, meqaleler, kitablar, oyrenmek, wiki, bilgi, tarix, seks, porno, indir, yukle, sex, azeri sex, azeri, seks yukle, sex yukle, izle, seks izle, porno izle, mobil seks, telefon ucun, chat, azeri chat, tanisliq, tanishliq, azeri tanishliq, sayt, medeni, medeni saytlar, chatlar, mekan, tanisliq mekani, mekanlari, yüklə, pulsuz, pulsuz yüklə, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, şəkil, muisiqi, mahnı, kino, film, kitab, oyun, oyunlar.