Mazkur ko‟rinishdagi qidiruv agar ma‟lumotlar tartibsiz yoki ular
Download 189.54 Kb. Pdf ko'rish
|
on (2 files merged)
Mazkur ko‟rinishdagi qidiruv agar ma‟lumotlar tartibsiz yoki ular tuzilishi noaniq bo‟lganda qo‟llaniladi. Bunda ma‟lumotlar butun jadval bo‟yicha operativ xotirada kichik adresdan boshlab, to katta adresgacha ketma-ket qarab chiqiladi. Massivda ketma- ket qidiruv (search o‟zgaruvchi topilgan element tartib raqamini saqlaydi). Ketma-
ket qidiruv algoritmi C++ tilida quyidagicha bo‟ladi:
int qidiruv(int key){ for (int i=0;i if (k[i]==key) { search = i;return search;} search = -1; return search; } }
Massivda ketma-ket qidiruv algoritmi samaradorligini bajarilgan taqqoslashlar soni M bilan aniqlash mumkin. Mmin = 1, Mmax = n . Agar ma‟lumotlar massiv yacheykasida bir xil ehtimollik bilan taqsimlangan bo‟lsa, u holda Mo„rt “taqribaaan”(n + 1)/2 bo‟ladi. Agar kerakli element jadvalda yo‟q bo‟lib, uni jadvalga qo‟shish lozim bo‟lsa, u holda yuqorida keltirilgan algoritmdagi oxirgi ikkita operator quyidagicha almashtiriladi. n=n+1;
k[n-1]:=key; r[n-1]:=rec; search:=n-1; return search; Chizi qli bir bog‟lamli ro‟yhatdan key kalitga mos elementni ketma-ket qidiruv usuli yordamida izlab topish dasturi. Node *q=NULL; Node *p=lst; while (p !=NULL){ if (p->k == key){ search = p; return search; } q = p; p = p->nxt; } Node *s=new Node;; s->k=key; s->r=rec; s->nxt= NULL; if (q == NULL){ s->nxt=lst; lst = s; } else q->nxt = s; search= s; return search; ы Ro‟yhatli tuzilmaning afzalligi shundan iboratki, ro‟yhatga elementni qo‟shish yoki o‟chirish tez amalga oshadi, bunda qo‟shish yoki o‟chirish element soniga bog‟liq bo‟lmaydi, massivda esa elementni qo‟shish yoki o‟chirish o‟rta hisobda barcha elementlarning yarmini siljitishni talab qiladi. Ro‟yhatda qidiruvning samaradorligi taxminan massivniki bilan bir xil bo‟ladi.
Massiv - bu bitta nom ostida birlashtirilgan bir xil turdagi hujayralar guruhi sifatida taqdim etilgan ma'lumotlar tuzilishi. Massivlar bir xil turdagi katta hajmdagi ma'lumotlarni qayta ishlash uchun ishlatiladi. Massivning ismi - ko'rsatgich, sizga qanday ko'rsatgichlar borligini birozdan keyin aytib beraman. Massiv ma'lumotlarining bitta katagi massiv elementi deyiladi. Massiv elementlari har qanday turdagi ma'lumotlar bo'lishi mumkin. Massivlar bir yoki bir nechta o'lchovlarga ega bo'lishi mumkin O'lchovlar soniga qarab massivlar n o'lchovli massivgacha bir o'lchovli, ikki o'lchovli, uch o'lchovli va boshqalarga bo'linadi. int a [16]; bu erda, int - ma'lumotlarning butun turi;
a - bir o'lchovli massivning nomi; 16 - bir o'lchovli massivning kattaligi, 16 ta katak. Har doim massiv nomidan keyin to'rtburchak qavslar mavjud bo'lib, ularda bir o'lchovli massivning kattaligi o'rnatiladi, shuning uchun massiv boshqa barcha o'zgaruvchilardan farq qiladi.
int mas[10], a[16];
Ikki o'lchovli massa va a mos ravishda 10 va 16 o'lchamlari bilan e'lon qilingan. Bundan tashqari, ushbu deklaratsiya usulida barcha massivlar bir xil ma'lumotlar turiga ega bo'ladi, bizning holatlarimizda - int. int a[16] = { 5, -12, -12, 9, 10, 0, -9, -12, -1, 23, 65, 64, 11, 43, 39, -15 }; Bir o'lchovli massivni inisializatsiya qilish teng belgidan keyin jingalak qavslarda bajariladi, massivning har bir elementi oldingisidan vergul bilan ajratiladi. int a[]={5,-12,-12,9,10,0,-9,-12,-1,23,65,64,11,43,39,-15}; Bunday holda, kompilyator bir o'lchovli massivning o'zi hajmini aniqlaydi. Massivning kattaligi faqat uni ishga tushirish paytida o'tkazib yuborilishi mumkin; massivning odatdagi deklaratsiyasi bilan massivning kattaligi ko'rsatilishi kerak. Keling, bir o'lchovli massivni qayta ishlash uchun oddiy dastur ishlab chiqamiz.
#include "stdafx.h" #include using namespace std;
int main(int argc, char* argv[]) { int array1[10]; // объявляем целочисленный массив cout << "Enter elementi massiva: " << endl; int sum = 0; for ( int counter = 0; counter < 10; counter++ ) // цикл для считывания чисел cin >> array1[counter]; // считываем вводимые с клавиатуры числа cout << "array1 = {"; for ( int counter = 0; counter < 10; counter++ ) // цикл для вывода элементов массива cout << array1[counter] << " "; // выводим элементы массива на стандартное устройство вывода for ( int counter = 0; counter < 10; counter++ ) // цикл для суммирования чисел массива sum += array1[counter]; // суммируем элементы массива
cout << "}\nsum = " << sum << endl; system("pause"); return 0; } Enter elementi massiva: 0 1 2 3 4 5 6 7 8 9 array1 = {0 1 2 3 4 5 6 7 8 9 } sum = 45 Для продолжения нажмите любую клавишу . . . Download 189.54 Kb. Do'stlaringiz bilan baham: |
ma'muriyatiga murojaat qiling