Tip:
Highlight text to annotate it
X
[Powered by Google Translate] [Linear Axtarış]
[Patrick Schmid, Harvard Universiteti]
[Bu CS50 edir.] [CS50.TV]
Axtarış yəqin daha tez-tez düşünmək çox ki, bir şey.
Aydındır ki, hər zaman bir web browser açmaq
bir web səhifə və axtarış -
sevimli sosial şəbəkə site sizin dost və ya axtarış -
siz axtarış.
Amma yalnız bir gündəlik nə ki, axtarış kiçik bir hissəsi.
Siz gizli bir mavi köynək tapmaq üçün istədiyiniz zaman,
münasibətilə üçün və ya mükəmməl qırmızı bluza,
siz axtarış edirik.
Siz əvvəl heç vaxt etdik ki, bir mağaza getmək zaman,
və məhsullarının koridorda olan brokoli aradığınız
siz axtarış edirik.
Sizə bildiriş açılmış ola bilər nə
ki, aradığınız nə asılı olaraq
və ya necə maddələr təşkil onlar üçün aradığınız zaman
siz axtarış necə bir təsiri var.
Məsələn, köynək də gizli asma halda,
siz yəqin ki, yalnız çox axtarış olmadan seçə bilərsiniz.
Əgər fərz edirik Əgər koridorda aşağı gəzmək üçün
olan brokoli almaq üçün, yəqin ki, bütün digər tərəvəz baxmaq
ki, brokoli tapmaq əvvəl.
Və ya alqoritm - Linear Axtar belə bir axtarış metodu bir nümunəsidir.
Adı nəzərdə tutur kimi,
Bu üsulla bir-birinin ardınca, xətti moda maddə üzrə axtarış.
Belə ki, sevdiyiniz search engine nəticələri baxaraq etdiyiniz zaman
və siz nəticələri siyahıdan oxumaq
siz xətti axtarış istifadə olunur.
Okay. Nin Məsələn baxaq.
2, 4, 0, 5, 3, 7, 8, 1 - biz nömrələri siyahısı De -
və biz sayı 0 arıyorsanız.
Aydındır ki, yalnız 0 üçüncü mövqe olduğunu görə bilərsiniz.
Lakin, bir kompüter proqramı ki, uğurlu deyil.
Bu, yalnız bir zaman bir sıra "görürəm" olar.
Belə ki, siyahının əvvəlində başlayan
yalnız 2 "görür".
Proqram sonra yoxlayır - 2 0 bərabərdir?
Aydındır deyil. Belə ki, növbəti sayı 4 gedir.
4 bərabər 0 varmı? Xeyr.
Növbəti bir, 0. Ah! Zero 0 bərabərdir.
Var, biz bunu var! Bu üçüncü mövqe var.
Okay. Nin bəzi pseudocode baxaq.
Yalnız uzun xətləri bir neçə, ancaq bir zaman bir xətt baxmaq edək.
Birincisi, bu və funksiyası müəyyən edək - və biz bu xətti axtarış zəng olacaq -
və iki dəlilləri edir - əsas və array.
Əsas, biz aradığınız ki, dəyəri
belə əvvəlki misal ki, sıfır idi.
Bir sıra nömrələri siyahısı
ki, axtarış üçün olacaq ki, bütün dəyərləri var.
Belə ki, nə biz nə istəyirik, biz baxmaq istəyirəm -
bütün mövqelərdən, belə ki, serialın əvvəldən başlayan
serialın çox son til - serialın uzunluğu belə -
hər vahid mövqedən baxmaq və hər biri oldu.
Belə ki ki, "üçün" loop nə.
Və hər mövqe, biz demək olacaq
"Biz aradığınız əsas bərabər cari vəziyyəti dəyər mi?"
Belə ki, - bu, əvvəlki Məsələn yenidən, əsas 0 idi -
biz söyləyərək "vəziyyəti i sıfıra bərabər serialın deyilmi?"
Əgər ki, biz istəyirik cari vəziyyəti çünki 'i' geri olacaq.
Belə ki, əvvəlki məsələn,
üçüncü mövqe idi.
Biz bütün array keçmişdir varsa
və biz bir şey aşkar deyil -
belə edək, biz sayı 500 aradığınız demək
aydın Məsələn deyildi -
biz bir şey qayıtmaq üçün
və biz -1 geri olacaq.
Bir mövqe var, çünki biz yalnız -1 qaytarılması edirik
ki array mövcud deyil.
Və belə bir funksiya geri almaq deməkdir
bu, "Hmm, tamam. Mən bir şey tapa bilmədi tapmaq deyir.
Ki, 500 idi, heç vaxt. "
Xətti axtarış haqqında gözəl şey olduğunu
bu maddələr hər hansı siyahısı üzrə işləmək lazımdır
asılı maddələr sifariş necə.
Olan brokoli bu məhsulların koridorda olduğu əhəmiyyətli deyil.
Siz əvvəlindən sonuna koridorda aşağı gəzmək kimi uzun kimi,
Sizcə, bu bulacaksınız
mağaza fərz əlbəttə, brokoli tökülmək deyil.
Amma ən böyük gücü də böyük zəiflik deyil.
Iki yüz ədəd siyahısı var De
ki, 1 200 sıralanır.
Nömrəni 198 arıyorsanız,
siz nömrə demək olar ki, bütün siyahısını axtarış var
sizin üçün aradığınız tapmaq əvvəl.
Daha yaxşı bir şəkildə olmalıdır!
Istirahət var arxayın ola bilərsiniz.
Lakin, başqa bir video üçün bir mövzu var.
Həmçinin, lad yoxdur!
Xətti axtarış bütün hallarda ən yaxşı çözüm deyil, yalnız ona görə
bu lazımlı deyil ki, demək deyil.
Əks halda, necə məhsullarının koridorda ki, brokoli tapmaq olar?
My name Patrick Schmid və bu CS50 edir.
[CS50.TV]