bor‖<
return 0;
}
Массивда кетма-кет қидирув алгоритми
самарадорлигини бажарилган
таққослашлар сони М билан аниқлаш мумкин. М
min
= 1, M
max
= n. Агар
маълумотлар массив ячейкасида бир ҳил эхтимоллик билан тақсимланган
бўлса, у ҳолда М
ср
(n + 1)/2 бўлади.
Агар керакли
элемент жадвалда
бўлмаса ва мазкур
элементни
жадвалга қўшиш
лозим бўлса, у
ҳолда юқоридаги
дастурдаги охирги
иккита оператор
қуйидагига
алмаштирилади.
Паскалда n:=n+1;
k[n]:=key;
r[n]:=rec; search:=n; exit;
Агар маълумотлар жадвали бир боғламли рўйхат кўринишида
берилган бўлса, у ҳолда кетма-кет қидирув рўйхатда
амалга
оширилади.
Алгоритмлар варианти: #include
#include
#include
#include struct TNode
{ int value; TNode* pnext;
TNode(int val): pnext(0), value(val) {}
};
//Ro'yhatga element qo'shish
void add2list(TNode **pphead, int val) { TNode **pp = pphead, *pnew;
//while(*pp) {
//if(val < (*pp)->value)
// break;
//else
// pp = &((*pp)->pnext);
//}
pnew = new TNode(val); pnew->pnext = *pp;
*pp = pnew;
}
//Ro'yhat elementlarini ekranga chiqarish void print(TNode *phead) {
TNode* p = phead; while(p) {
cout <<""<< p->value<<"|" <<" "<<"|"<
> "; p = p->pnext;
}
cout << endl;
}
// Ro'yhatda
element qidirish, C++ TNode* Find(TNode *phead,
int x) {
TNode *p=phead; while(p)
if (p->value==x)
return p; else p = p->pnext;
return 0; }
//Ro'hat elementini o'chirish
void deleteList(TNode *phead) {
if(phead) { deleteList(phead->pnext);
if(phead) delete phead;
}
}
//Asosiy qism
int main() {int mas[1000], N, key; TNode* T; clrscr();
TNode
*phead
=
0;
//srand(time(0));
cout<<"Royhat uzunligini kirit"<
>N;
cout<<"Elementlarni kirit!"<j++) cin>>mas[j]; for(int i = 0; i < N; ++i)
add2list(&phead,mas[i]); cout<<"Qidiruv elementni
kiriting!"<>key;
// rand() % 100);
cout << "Elements of the list:" << endl; print(phead);
T=Find(phead,key);
if (T==0) cout <<"Bunday element yoq"<
else cout <<"Bunday element bor"<<" "<
value<<" "<//deleteList(phead); getch();
}
Паскалда: q:=nil;
p:=table; while (p <>
nil) do begin if p^.k =
key then begin search:
= p; exit; end; q:= p;
p:= p^.nxt; end;
New(s); s^.k:=key; s^.r:=rec; s.^nxt:= nil;
if q = nil then table =
s else q.^nxt = s;
search:= s; exit
Рўйхатли тузилманинг афзаллиги шундан иборатки, рўйхатга
элементни қўшиш ѐки ўчириш тез амалга ошади, бунда қўшиш ѐки ўчириш
элемент сонига боғлиқ бўлмайди, массивда эса элементни қўшиш ѐки
ўчириш тахминан барча элементларни яримини силжитишни талаб қилади.
Рўйхатда қидирувни самарадорлиги тахминан массивники билан бир ҳил
бўлади.
Умуман олганда кетма-кет қидирув самарадорлигини ошириш мумкин.
Фараз қилайлик, кун давомида маълумотлар йиғилиб, кечқурун улар
қайта ишлансин. Маълумотлар тўплангандан кейин улар сараланади.
Do'stlaringiz bilan baham: