Trong bài thuật toán sắp xếp nổi bọt tôi đã nói nếu một danh sách được sắp xếp có thứ tự thì việc tìm kiếm trên danh sách đó rất là nhanh, và để chứng minh điều đó thì bắt đầu từ bài này chúng ta sẽ tìm hiểu hai thuật toán đó là tìm kiếm tuyến tính và tìm kiêm nhị phân, từ đó bạn sẽ hiểu nguyên do nếu một mảng được sắp xếp sẵn thì thời gian tìm kiếm sẽ nhanh hơn.

Trong bài này chúng ta sẽ tìm hiểu thuật toán tìm kiếm tuyến tính  trước, nội dung bìa học như sau:

  • Tìm kiếm tuyến tính là gì?
  • Các ví dụ tìm kiếm tuyến tính

Nội dung chính

  • 1. Tìm kiếm tuyến tính là gì?
  • 2. Ví dụ tìm kiếm tuyến tính
  • 3. Lời kết

1. Tìm kiếm tuyến tính là gì?

Tìm kiếm tuyến tính (hay tìm kiếm tuần tự)  là một thuật toán tìm kiếm một phần tử cho trước nằm trong một danh sách (có thể là mảng) bằng cách duyệt lần lược các phần tử và so sánh cho đến khi tìm thấy phần tử đó.

Giả sử có mảng $a gồm 50 phần tử, giờ tìm xem số 50 có nằm trong mảng không thì ta sẽ dùng vòng lặp for để duyệt lần lược 50 phần tử đó và so sánh xem có phần tử nào bằng 50 không. Nếu có thì trả kết quả là tìm thấy và dừng vòng lặp, ngược lại nếu lặp hể cả 50 phần tử mà vẫn không có thì sẽ trả kết quả là không tìm thấy.

Tìm kiếm tuyến tính tuần tự là một giải thuật rất đơn giản và dễ cài đặt, giải thuật này tỏ ra khá là nhanh đối với những dữ liệu có kích thước nhỏ vừa phải chưa được sắp thứ tự.

2. Ví dụ tìm kiếm tuyến tính

Trong phần này chúng ta sẽ làm các ví dụ tìm kiếm tuyến tính trong php, qua đó các bạn sẽ hiểu được ý tưởng của nó.

Ví dụ 1:  Cho mảng $mang = array(321,312,3,4,5,45,56,5,7,6,787,8,7,2); Hãy viết hàm kiểm tra số 67 có nằm trong mảng không?

Chúng ta sẽ giải bài toán bằng hai cách không dùng hàm và có dùng hàm.

Giải không dùng hàm:

 

1
2
3
4
5
6
7
8
9
$mang = array(321,312,3,4,5,45,56,5,7,6,787,8,7,2);
 
$can_tim = 67;
 
for ($i = 0; $i < count($mang); $i++){ // duyệt qua từng phần tử của mảng
    if ($mang[$i] == $can_tim){ // và so sánh xem có bằng số 67 không, nếu có thì xuất ra màn hình và dừng vòng lặp
        echo 'Số ' . $can_tim . ' có nằm trong mảng tại ví trí thứ ' . $i;
        break;
    }

 

Giải có dùng hàm:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// hàm kiểm tra
function kiem_tra($mang, $can_tim)
{
    for ($i = 0; $i < count($mang); $i++){ // duyệt qua từng phần tử của mảng
        if ($mang[$i] == $can_tim){ // và so sánh xem có bằng số 67 không, nếu có thì xuất ra màn hình
            return true; // và không cần làm gì trong hàm này nữa, trả về là đúng luôn
        }
    }
    return false; // sau khi lặp hết mà ko có thì return về false
}
 
// ---------------------- chương trình chính
// Cho mảng
$mang = array(321,312,3,4,5,45,56,5,7,6,787,8,7,2);
 
// biến cần tìm
$can_tim = 67;
 
// gọi hàm và xuất kết quả
if (kiem_tra($mang, $can_tim)){
    echo 'Số ' . $can_tim . ' có nằm trong mảng';
}

 

Ví dụ 2: Cho một mảng gồm các phần tử từ 1 đến 100. Hãy tìm vị trí các số chia hết cho 3 trong dãy

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// Hàm tìm các số chia hết cho 3
function tim_so_chia_het_cho_3($mang)
{
    foreach ($mang as $key => $val){
        if ($val % 3 == 0){
            echo 'Ví trí thứ ' . $key . '<br/>';
        }
    }
}
 
// Chương trình chính
//-----------------------------------------------
// Lặp từ 1 đến 100 để gán giá trị vào mảng
$mang = array();
for ($i = 1; $i <= 100; $i++){
    $mang[$i] = $i;
}
 
// Gọi hàm để xuất ra vị trí chia hết cho 3
tim_so_chia_het_cho_3($mang);

 

3. Lời kết

Kết thúc bài học này hy vọng các bạn không lúng túng khi gặp một bài toán tìm kiếm nữa nhé, nếu có gặp hãy nhớ đến thuật toán tìm kiếm tuyến tính tại freetuts.net laugh. Bài học tiếp theo chúng ta sẽ học về kỹ thuật đặt lính canh trong php.

301 BÌNH LUẬN

  1. Excellent post however I was wanting to know if you could write
    a litte more on this subject? I’d be very grateful if you could
    elaborate a little bit more. Thank you!

  2. Howdy, i read your blog occasionally and i own a similar one and i was
    just wondering if you get a lot of spam feedback? If so how do you stop it,
    any plugin or anything you can recommend? I get so much
    lately it’s driving me crazy so any support is
    very much appreciated.

  3. Thanks , I’ve recently been searching for infofmation about
    this topic for ages and yours is the bwst I have discovered
    so far. But, what about the conclusion? Are you sure about the source?

  4. Great post. I was checking continuously this blog and I’m impressed!

    Extremely helpful information particularly the last part 🙂 I
    care for such info a lot. I was seeking this certain information for a very long time.
    Thank you and best of luck.

  5. I am curious to find out what blog platform you have been using?
    I’m experiencing some minor security problems with my
    latest site and I’d like to find something more safeguarded.
    Do you have any suggestions?

  6. Fantastic items from you, man. I have be aware your
    stuff previous to and you are simply too fantastic.

    I really like what you have received right here, certainly like what you’re
    saying and the way through which you assert it. You’re making
    it entertaining and you continue to care for to keep it sensible.
    I cant wait to learn much more from you. This is actually a tremendous site.

  7. Great article! This is the type of information that are supposed to be shared across the
    web. Shame on the search engines for not positioning this submit upper!
    Come on over and consult with my site . Thanks =)

  8. I’m impressed, I have to admit. Rarely do I come across a blog that’s equally
    educative and entertaining, and let me tell you, you’ve hit the nail on the head.

    The issue is something not enough men and women are speaking intelligently about.

    I am very happy that I found this during my
    search for something regarding this.

  9. Does your site have a contact page? I’m having a tough time locating it but, I’d like to send you an email.
    I’ve got some suggestions for your blog you might be interested in hearing.
    Either way, great site and I look forward to seeing it expand over
    time.

  10. Hey I am so grateful I found your blog page, I really found
    you by mistake, while I was searching on Yahoo for something
    else, Anyhow I am here now and would just like to say cheers for a tremendous
    post and a all round entertaining blog (I also love the
    theme/design), I don’t have time to look
    over it all at the minute but I have saved it and also added in your RSS feeds, so
    when I have time I will be back to read a lot more, Please do keep up the fantastic jo.

  11. I loved as much as you will receive carried out right here.
    The sketch is attractive, your authored subject matter stylish.
    nonetheless, you command get bought an edginess over that you wish be delivering the following.
    unwell unquestionably come further formerly again as exactly the same nearly
    a lot often inside case you shield this increase.

  12. This is very interesting, You are a very skilled blogger.
    I have joined your rss feed and look forward to seeking more of your great post.
    Also, I’ve shared your website in my social networks!

  13. Hey just wanted to give you a quick heads up. The text in your content seem to
    be running off the screen in Safari. I’m not sure if this is a formatting issue or something to do with web browser compatibility but I figured I’d post to let you know.
    The style and design look great though! Hope you get the problem solved
    soon. Kudos

  14. Nice post. I was checking constantly this blog and I am impressed!
    Extremely useful info specially the last part 🙂 I care for
    such info much. I was looking for this certain information for a very long time.
    Thank you and good luck.

  15. Great post. I was checking continuously this blog and I am
    impressed! Extremely helpful information particularly the closing part :
    ) I take care of such information much. I was looking for this particular information for a long time.
    Thanks and good luck.

  16. I think what you posted was very reasonable.
    However, think on this, what if you added a little information? I
    mean, I don’t want to tell you how to run your website, but
    what if you added a title that makes people
    want more? I mean Bài 14: Thuật toán tìm kiếm tuyến tính trong php | Tin Học Của Em is kinda plain. You could look at Yahoo’s home page and see how they write article headlines to grab viewers to
    open the links. You might try adding a video or a pic or
    two to get readers excited about what you’ve written. In my opinion, it could make your blog a little bit more interesting.

  17. I have been surfing online more than 3 hours today, yet I never found any attention-grabbing article like yours.
    It’s beautiful worth enough for me. In my view, if all site
    owners and bloggers made excellent content as you did, the
    internet shall be much more useful than ever before.

  18. Sweet blog! I found it while browsing on Yahoo News. Do you have any suggestions on how to get listed in Yahoo News? I ave been trying for a while but I never seem to get there! Appreciate it

  19. Thank which you bunch with regard to sharing this kind of with all you genuinely admit a minute ago what you are speaking approximately! Bookmarked. Entertain also obtain guidance from my web page

  20. XEvil – tốt nhất mã xác nhận giải quyết công cụ không giới hạn số giải pháp, mà không đề số giới hạn và cao nhất, chính xác!
    XEvil 5.0 hỗ trợ hơn 12.000 loại hình ảnh-mã xác nhận, bao gồm ReCaptcha, xác nhận Google Phím mã xác nhận, Microsoft mã xác nhận, Hơi mã xác nhận, SolveMedia, ReCaptcha-2 (VÂNG!!!) ReCaptcha-3 quá.

    1.) Linh hoạt: bạn có thể điều chỉnh logic cho cơ khí của bạn!
    2.) Dễ dàng: chỉ cần bắt đầu XEvil, nhấn phím 1 nút – và nó sẽ tự động nhận dễ dàng trực từ ứng dụng của bạn hoặc kịch bản
    3.) Nhanh: 0,01 giây cho đơn giản dễ dàng trực khoảng 20..40 giây cho ReCaptcha-2, và khoảng 5…8 giây cho ReCaptcha-3

    Bạn có thể sử dụng XEvil với bất kỳ SEO VỪA phần mềm, bất kỳ phân tích của mật khẩu-kiểm tra, bất kỳ tích ứng dụng, hoặc bất kỳ chỉnh kịch bản:
    XEvil hỗ trợ hầu hết nổi tiếng anti-dịch vụ mã xác nhận API: 2Captcha, RuCaptcha, AntiGate.com (Anti-Captcha), DeathByCaptcha, etc.

    Quan tâm? Chỉ cần tìm kiếm ở Google “XEvil” để biết thêm thông tin
    Bạn đọc này – sau đó nó hoạt động! 😉

    Liên quan, Lolitopag8462

    XEvil.Net

  21. XEvil – tốt nhất mã xác nhận giải quyết công cụ không giới hạn số giải pháp, mà không đề số giới hạn và cao nhất, chính xác!
    XEvil 5.0 hỗ trợ hơn 12.000 loại hình ảnh-mã xác nhận, bao gồm ReCaptcha, xác nhận Google Phím mã xác nhận, Microsoft mã xác nhận, Hơi mã xác nhận, SolveMedia, ReCaptcha-2 (VÂNG!!!) ReCaptcha-3 quá.

    1.) Linh hoạt: bạn có thể điều chỉnh logic cho cơ khí của bạn!
    2.) Dễ dàng: chỉ cần bắt đầu XEvil, nhấn phím 1 nút – và nó sẽ tự động nhận dễ dàng trực từ ứng dụng của bạn hoặc kịch bản
    3.) Nhanh: 0,01 giây cho đơn giản dễ dàng trực khoảng 20..40 giây cho ReCaptcha-2, và khoảng 5…8 giây cho ReCaptcha-3

    Bạn có thể sử dụng XEvil với bất kỳ SEO VỪA phần mềm, bất kỳ phân tích của mật khẩu-kiểm tra, bất kỳ tích ứng dụng, hoặc bất kỳ chỉnh kịch bản:
    XEvil hỗ trợ hầu hết nổi tiếng anti-dịch vụ mã xác nhận API: 2Captcha.com, RuCaptcha, AntiGate (Anti-Captcha.com), DeathByCaptcha, etc.

    Quan tâm? Chỉ cần tìm kiếm ở YouTube “XEvil” để biết thêm thông tin
    Bạn đọc này – sau đó nó hoạt động! ;)))

    Liên quan, Lolitapag4128

    XEvil.Net

  22. XEvil – tốt nhất mã xác nhận giải quyết công cụ không giới hạn số giải pháp, mà không đề số giới hạn và cao nhất, chính xác!
    XEvil 5.0 hỗ trợ hơn 12.000 loại hình ảnh-mã xác nhận, bao gồm ReCaptcha, xác nhận Google Phím mã xác nhận, Microsoft mã xác nhận, Hơi mã xác nhận, SolveMedia, ReCaptcha-2 (VÂNG!!!) ReCaptcha-3 quá.

    1.) Linh hoạt: bạn có thể điều chỉnh logic cho cơ khí của bạn!
    2.) Dễ dàng: chỉ cần bắt đầu XEvil, nhấn phím 1 nút – và nó sẽ tự động nhận dễ dàng trực từ ứng dụng của bạn hoặc kịch bản
    3.) Nhanh: 0,01 giây cho đơn giản dễ dàng trực khoảng 20..40 giây cho ReCaptcha-2, và khoảng 5…8 giây cho ReCaptcha-3

    Bạn có thể sử dụng XEvil với bất kỳ SEO VỪA phần mềm, bất kỳ phân tích của mật khẩu-kiểm tra, bất kỳ tích ứng dụng, hoặc bất kỳ chỉnh kịch bản:
    XEvil hỗ trợ hầu hết nổi tiếng anti-dịch vụ mã xác nhận API: 2Captcha, RuCaptcha, AntiGate (Anti-Captcha), DeathByCaptcha, etc.

    Quan tâm? Chỉ cần tìm kiếm ở YouTube “XEvil” để biết thêm thông tin
    Bạn đọc này – sau đó nó hoạt động! ;)))

    Liên quan, Lolitypag8751

    XEvil.Net

  23. XEvil – tốt nhất mã xác nhận giải quyết công cụ không giới hạn số giải pháp, mà không đề số giới hạn và cao nhất, chính xác!
    XEvil 5.0 hỗ trợ hơn 12.000 loại hình ảnh-mã xác nhận, bao gồm ReCaptcha, xác nhận Google Phím mã xác nhận, Microsoft mã xác nhận, Hơi mã xác nhận, SolveMedia, ReCaptcha-2 (VÂNG!!!) ReCaptcha-3 quá.

    1.) Linh hoạt: bạn có thể điều chỉnh logic cho cơ khí của bạn!
    2.) Dễ dàng: chỉ cần bắt đầu XEvil, nhấn phím 1 nút – và nó sẽ tự động nhận dễ dàng trực từ ứng dụng của bạn hoặc kịch bản
    3.) Nhanh: 0,01 giây cho đơn giản dễ dàng trực khoảng 20..40 giây cho ReCaptcha-2, và khoảng 5…8 giây cho ReCaptcha-3

    Bạn có thể sử dụng XEvil với bất kỳ SEO VỪA phần mềm, bất kỳ phân tích của mật khẩu-kiểm tra, bất kỳ tích ứng dụng, hoặc bất kỳ chỉnh kịch bản:
    XEvil hỗ trợ hầu hết nổi tiếng anti-dịch vụ mã xác nhận API: 2Captcha.com, RuCaptcha.Com, AntiGate.com (Anti-Captcha.com), DeathByCaptcha, etc.

    Quan tâm? Chỉ cần tìm kiếm ở Google “XEvil” để biết thêm thông tin
    Bạn đọc này – sau đó nó hoạt động! 🙂

    Liên quan, Lolitopag6476

    XEvil.Net

  24. XEvil – tốt nhất mã xác nhận giải quyết công cụ không giới hạn số giải pháp, mà không đề số giới hạn và cao nhất, chính xác!
    XEvil 5.0 hỗ trợ hơn 12.000 loại hình ảnh-mã xác nhận, bao gồm ReCaptcha, xác nhận Google Phím mã xác nhận, Microsoft mã xác nhận, Hơi mã xác nhận, SolveMedia, ReCaptcha-2 (VÂNG!!!) ReCaptcha-3 quá.

    1.) Linh hoạt: bạn có thể điều chỉnh logic cho cơ khí của bạn!
    2.) Dễ dàng: chỉ cần bắt đầu XEvil, nhấn phím 1 nút – và nó sẽ tự động nhận dễ dàng trực từ ứng dụng của bạn hoặc kịch bản
    3.) Nhanh: 0,01 giây cho đơn giản dễ dàng trực khoảng 20..40 giây cho ReCaptcha-2, và khoảng 5…8 giây cho ReCaptcha-3

    Bạn có thể sử dụng XEvil với bất kỳ SEO VỪA phần mềm, bất kỳ phân tích của mật khẩu-kiểm tra, bất kỳ tích ứng dụng, hoặc bất kỳ chỉnh kịch bản:
    XEvil hỗ trợ hầu hết nổi tiếng anti-dịch vụ mã xác nhận API: 2Captcha.com, RuCaptcha, AntiGate (Anti-Captcha.com), DeathByCaptcha, etc.

    Quan tâm? Chỉ cần tìm kiếm ở Google “XEvil” để biết thêm thông tin
    Bạn đọc này – sau đó nó hoạt động! 😉

    Liên quan, Lolitepag6843

    XEvil.Net

  25. Nice blog right here! Additionally your site a lot up fast! What host are you the use of? Can I get your affiliate link for your host? I desire my web site loaded up as fast as yours lol

  26. XEvil – tốt nhất mã xác nhận giải quyết công cụ không giới hạn số giải pháp, mà không đề số giới hạn và cao nhất, chính xác!
    XEvil 5.0 hỗ trợ hơn 12.000 loại hình ảnh-mã xác nhận, bao gồm ReCaptcha, xác nhận Google Phím mã xác nhận, Microsoft mã xác nhận, Hơi mã xác nhận, SolveMedia, ReCaptcha-2 (VÂNG!!!) ReCaptcha-3 quá.

    1.) Linh hoạt: bạn có thể điều chỉnh logic cho cơ khí của bạn!
    2.) Dễ dàng: chỉ cần bắt đầu XEvil, nhấn phím 1 nút – và nó sẽ tự động nhận dễ dàng trực từ ứng dụng của bạn hoặc kịch bản
    3.) Nhanh: 0,01 giây cho đơn giản dễ dàng trực khoảng 20..40 giây cho ReCaptcha-2, và khoảng 5…8 giây cho ReCaptcha-3

    Bạn có thể sử dụng XEvil với bất kỳ SEO VỪA phần mềm, bất kỳ phân tích của mật khẩu-kiểm tra, bất kỳ tích ứng dụng, hoặc bất kỳ chỉnh kịch bản:
    XEvil hỗ trợ hầu hết nổi tiếng anti-dịch vụ mã xác nhận API: 2Captcha, RuCaptcha, AntiGate.com (Anti-Captcha.com), DeathByCaptcha, etc.

    Quan tâm? Chỉ cần tìm kiếm ở Google “XEvil” để biết thêm thông tin
    Bạn đọc này – sau đó nó hoạt động! 🙂

    Liên quan, Lolitopag7401

    XEvil.Net

  27. Wow, marvelous blog layout! How long have you been running a blog for? you made running a blog look easy. The overall glance of your site is excellent, as well as the content material!

  28. It’а†s actually a nice and useful piece of info. I’а†m glad that you simply shared this helpful info with us. Please keep us informed like this. Thanks for sharing.

  29. Es muy frecuente que este mal aparezca por derivación de problemas psicológicos, como los mencionados de vivir en una sociedad exigente como la nuestra, en la que la virilidad se encuentra socialmente relacionada con el éxito profesional y social, y en la que se exige más de lo que se debe en el plano sexual, condicionado por lo que creemos que es lo correcto, etc.

  30. Thank you a bunch for sharing this with all people you actually recognise what you are talking
    approximately! Bookmarked. Please additionally consult with my website =).
    We may have a link alternate contract among us

  31. I simply couldn’t leave your web site prior to suggesting that I really enjoyed the standard information an individual provide to your visitors?

    Is gonna be back incessantly to inspect new posts

  32. you’re in reality a just right webmaster. The site loading velocity is amazing.

    It kind of feels that you are doing any unique trick.

    Moreover, The contents are masterwork. you’ve done a magnificent task in this subject!

  33. naturally like your website however you have to test the spelling on quite a
    few of your posts. Many of them are rife with spelling problems and I to find it very bothersome to inform the truth nevertheless I’ll definitely
    come back again.

  34. Wow! This can be one particular of the most useful blogs We ave ever arrive across on this subject. Actually Magnificent. I am also an expert in this topic therefore I can understand your hard work.

  35. You are so awesome! I do not think I have read through anything like this before.
    So nice to find another person with some genuine thoughts on this topic.
    Seriously.. many thanks for starting this up. This website is one thing that
    is required on the internet, someone with
    a little originality!

  36. Wow, superb blog layout! How long have you been blogging for? you make blogging look easy. The overall look of your website is fantastic, as well as the content!

  37. It as really a nice and helpful piece of information. I am glad that you shared this helpful information with us. Please keep us informed like this. Thanks for sharing.

  38. My spouse and I stumbled over here from a different web page
    and thought I may as well check things out. I like what
    I see so now i am following you. Look forward to going over your
    web page for a second time.

  39. Nice post. I learn something new and challenging on blogs I stumbleupon everyday. It will always be exciting to read through content from other authors and practice something from their web sites.

  40. Terrific post but I was wanting to know if you could write a litte more on this subject? I ad be very thankful if you could elaborate a little bit further. Kudos!

  41. You could definitely see your enthusiasm in the work you write. The arena hopes for more passionate writers such as you who aren at afraid to say how they believe. At all times follow your heart.

  42. I’а†ve read a few good stuff here. Definitely worth bookmarking for revisiting. I wonder how so much attempt you put to make the sort of great informative website.

  43. Your style is unique in comparison to other people I have read stuff from. Many thanks for posting when you have the opportunity, Guess I all just book mark this blog.

  44. Wow, fantastic movie porn child weblog structure! How long have you ever been running a blog for? you make blogging glance easy. The entire glance of your website is great, as well as the content!

  45. pulp fiber suspension, transported towards the pulp suspension into a network of institutions, right into a fiber network in the wet state and then into

  46. I?аАТ’аЂа†ll right away seize your rss feed as I can at in finding your email subscription link or newsletter service. Do you have any? Please let me realize in order that I may just subscribe. Thanks.

  47. You can certainly see your skills in the work you write. The world hopes for more passionate writers like you who are not afraid to say how they believe. Always follow your heart.

  48. I’а†ve read various fantastic stuff here. Undoubtedly worth bookmarking for revisiting. I surprise how a whole lot try you set to generate this form of great informative internet site.

  49. Keep up the wonderful piece of work, I read few blog posts on this web site and I believe that your site is real interesting and has got bands of wonderful information.

  50. It as not that I want to replicate your internet site, but I really like the style and design. Could you let me know which design are you using? Or was it custom made?

  51. Hello! This post could not be written any better!

    Reading this post reminds me of my good old room mate!

    He always kept chatting about this. I will forward
    this article to him. Fairly certain he will have a good read.
    Thanks for sharing!

THOÁT KHỎI BÌNH LUẬN

Please enter your comment!
Please enter your name here