• Home
  • Java
    • All
    • Các ide để lâp trình Java
    • Java-core

    Thuật toán sắp xếp Bubble sort(Sắp xếp nổi bọt)

    Sử dụng ThreadPool và Executor trong Java qua ví dụ

    Ghi Log trong java – Thực hiện như thế nào cho đúng ?

    Ghi Log trong java – Thực hiện như thế nào cho đúng ?

    Hướng dẫn cài đặt và sử dụng IntelliJ IDEA cơ bản

    Hướng dẫn cài đặt và sử dụng IntelliJ IDEA cơ bản

    Lộ trình để trở thành Java Dev

    Trending Tags

    • Spring framework
    • Hibernate-JPA
    • Database
      • All
      • Mysql
      • Oracle Database

      Select for update in Oracle

      HOW TO SETUP MYSQL 5.7 REPLICATION WITH MONITORING ON UBUNTU 16.04

      Trending Tags

    • Utility Library
      • All
      • Guava Cache
      Thực hành Cache Guava Cache trong ứng dụng Spring Boot

      Thực hành Cache Guava Cache trong ứng dụng Spring Boot

    • Tech News
    No Result
    View All Result
    • Home
    • Java
      • All
      • Các ide để lâp trình Java
      • Java-core

      Thuật toán sắp xếp Bubble sort(Sắp xếp nổi bọt)

      Sử dụng ThreadPool và Executor trong Java qua ví dụ

      Ghi Log trong java – Thực hiện như thế nào cho đúng ?

      Ghi Log trong java – Thực hiện như thế nào cho đúng ?

      Hướng dẫn cài đặt và sử dụng IntelliJ IDEA cơ bản

      Hướng dẫn cài đặt và sử dụng IntelliJ IDEA cơ bản

      Lộ trình để trở thành Java Dev

      Trending Tags

      • Spring framework
      • Hibernate-JPA
      • Database
        • All
        • Mysql
        • Oracle Database

        Select for update in Oracle

        HOW TO SETUP MYSQL 5.7 REPLICATION WITH MONITORING ON UBUNTU 16.04

        Trending Tags

      • Utility Library
        • All
        • Guava Cache
        Thực hành Cache Guava Cache trong ứng dụng Spring Boot

        Thực hành Cache Guava Cache trong ứng dụng Spring Boot

      • Tech News
      No Result
      View All Result
      Gà Tồ Study
      No Result
      View All Result
      Home Tech

      Giải thuật tìm kiếm nhị phân- Binary Search

      binary search

      gatostudy by gatostudy
      10 March, 2020
      in Uncategorized
      0
      0
      SHARES
      429
      VIEWS
      Share on FacebookShare on Twitter

      Thuật toán tìm kiếm nhị phân là một trong các thuật toán sắp xếp được sử dụng rất nhiều trong thực tế.

      Tìm kiếm là một phần không thể thiếu của mọi ứng dụng. Tính năng tìm kiếm cho phép người sử dụng nhanh chóng truy vấn và tìm kiếm các bản ghi theo mong muốn. Và một công cụ tìm kiếm nổi tiếng nhất hàng ngày chúng ta vẫn thường sử dụng đó là Google search.

      Bài viết này mình sẽ giới thiệu cho các bạn một thuật toán tìm kiếm tối ưu áp dụng đối với trường hợp dữ liệu số đã sắp xếp.

      Cho một mãng có n phân tử đã sắp xếp, viết chức năng để tìm kiếm phần tử x trong mãng này.

      Giải thuật đơn giản nhất cho bài toán này là sử dụng linear search(tìm kiếm tuyến tính). Đi qua từng phần tử của mảng để tìm x. Thuật toán này trong trường hợp xấu nhất cho độ phức tạp là O(n).

      Code minh họa tình kiếm tuyến tính

      package gatostudy.com.sort;

      public class LinearSearch {
      public static int search(int arr[], int x)
      {
      int n = arr.length;
      for(int i = 0; i < n; i++)
      {
      if(arr[i] == x)
      return i;
      }
      return -1;
      }

      public static void main(String args[])
      {
      int arr[] = { 2, 3, 4, 10, 40 };
      int x = 10;

      int result = search(arr, x);
      if(result == -1)
      System.out.print(“Element is not present in array”);
      else
      System.out.print(“Element is present at index ” + result);
      }
      }

      Một cách tiếp cận nữa để thực hiện tìm kiếm là sử dụng Binary Search.

      Binary Search:  Tìm kiếm nhị phân trên 1 mãng đã sắp xếp giảm độ phức tạp chỉ O(Log n)

      Về cơ bản chúng ta sẽ loại bỏ được ½ các phân từ trong mảng sau 1 phép so sánh.

      Các bước thực hiện.

      1. So sánh x với phân tử đứng giữa.
      2. Nếu x là số ở giữa thì return x.
      3. Nếu x lớn hơn phần tử chính giữa thì x chỉ có thể ở phía bên phải của phần tử chính giữa.
      4. Ngược lại thì x sẽ ở phía bên trái phần tử chính giữa.
      5. Sử dụng đệ quy để tìm kiếm tương tự..

      Code minh họa tìm kiếm nhị phân.

      package gatostudy.com.sort;

      // Java implementation of recursive Binary Search
      class BinarySearch {
      // Returns index of x if it is present in arr[l..
      // r], else return -1
      int binarySearch(int arr[], int l, int r, int x)
      {
      if (r >= l) {
      int mid = l + (r – l) / 2;

      // If the element is present at the
      // middle itself
      if (arr[mid] == x)
      return mid;

      // If element is smaller than mid, then
      // it can only be present in left subarray
      if (arr[mid] > x)
      return binarySearch(arr, l, mid – 1, x);

      // Else the element can only be present
      // in right subarray
      return binarySearch(arr, mid + 1, r, x);
      }

      // We reach here when element is not present
      // in array
      return -1;
      }

      // Driver method to test above
      public static void main(String args[])
      {
      BinarySearch ob = new BinarySearch();
      int arr[] = { 2, 3, 4, 10, 40 };
      int n = arr.length;
      int x = 10;
      int result = ob.binarySearch(arr, 0, n – 1, x);
      if (result == -1)
      System.out.println(“Element not present”);
      else
      System.out.println(“Element found at index ” + result);
      }
      }

       

      Previous Post

      Thuật toán sắp xếp Bubble sort(Sắp xếp nổi bọt)

      Next Post

      Next Post

      Leave a Reply Cancel reply

      • Trending
      • Comments
      • Latest
      Hướng dẫn cài đặt và sử dụng IntelliJ IDEA cơ bản

      Hướng dẫn cài đặt và sử dụng IntelliJ IDEA cơ bản

      24 June, 2020
      Spring Data JPA – Giới thiệu các tính năng và cách sử dụng

      Spring Data JPA – Giới thiệu các tính năng và cách sử dụng

      13 November, 2019
      Ghi Log trong java – Thực hiện như thế nào cho đúng ?

      Ghi Log trong java – Thực hiện như thế nào cho đúng ?

      29 November, 2019
      Hướng dẫn kết hợp Spring Data JPA với SpringBoot qua ví dụ

      Hướng dẫn kết hợp Spring Data JPA với SpringBoot qua ví dụ

      14 November, 2019

      Sử dụng ThreadPool và Executor trong Java qua ví dụ

      1
      Hướng dẫn cài đặt và sử dụng IntelliJ IDEA cơ bản

      Hướng dẫn cài đặt và sử dụng IntelliJ IDEA cơ bản

      1

      Select for update in Oracle

      0
      Designing a better architecture for a Node.js API

      Designing a better architecture for a Node.js API

      0

      Select for update in Oracle

      23 January, 2022

      HOW TO SETUP MYSQL 5.7 REPLICATION WITH MONITORING ON UBUNTU 16.04

      3 October, 2021

      20 May, 2021

      Giải thuật tìm kiếm nhị phân- Binary Search

      10 March, 2020

      Bài Viết Phổ Biến

      • Hướng dẫn cài đặt và sử dụng IntelliJ IDEA cơ bản

        Hướng dẫn cài đặt và sử dụng IntelliJ IDEA cơ bản

        0 shares
        Share 0 Tweet 0
      • Spring Data JPA – Giới thiệu các tính năng và cách sử dụng

        0 shares
        Share 0 Tweet 0
      • Ghi Log trong java – Thực hiện như thế nào cho đúng ?

        0 shares
        Share 0 Tweet 0
      • Hướng dẫn kết hợp Spring Data JPA với SpringBoot qua ví dụ

        0 shares
        Share 0 Tweet 0
      • Thực hành Cache Guava Cache trong ứng dụng Spring Boot

        0 shares
        Share 0 Tweet 0

      Theo dõi blog qua email

      Nhập địa chỉ email của bạn để đăng ký theo dõi và nhận thông báo về các bài mới qua email.

      Join 2 other subscribers

      Gà Tồ Study

      © 2019 Gato Study - Vì một Việt Nam tươi đẹp .

      Keep Camp & Keep Coding

      • About
      • Advertise
      • Careers
      • Contact

      Follow Us

      No Result
      View All Result
      • Home
      • Hibernate-JPA
      • Spring framework
      • Java
      • Api clients
      • Utility Library
      • Guava Cache
      • Apache commons
      • Oracle Database
      • Database
      • Mysql
      • Tech
      • MongoDB
      • Food

      © 2019 Gato Study - Vì một Việt Nam tươi đẹp .