• 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

      Tìm hiểu thuật toán sắp xếp nhanh(QuickSort)

      Quick Sort

      gatostudy by gatostudy
      9 March, 2020
      in Uncategorized
      0
      0
      SHARES
      209
      VIEWS
      Share on FacebookShare on Twitter

      Thuật toán QuickSort là một trong những thuật toán sắp xếp hiệu quả nhất và dựa trên việc chia một mảng thành các mảng nhỏ hơn, sắp xếp trong các mảng nhỏ này để đi tới kết quả. Sắp xếp nhanh có khả năng sắp xếp danh sách các yếu tố dữ liệu nhanh hơn đáng kể so với bất kỳ thuật toán sắp xếp phổ biến nào. Nếu so với các thuật toán sắp xếp phổ biến như Insertion sort, selection sort hay bubble sort, thì quicksort cho một hiệu năng đáng kể.

      Chúng ta sẽ tìm hiểu quick sort là gì? Cách sử dụng và lập trình thuật toán quick sort sắp xếp nhanh bằng ngôn ngữ Java

      Thuật toán Quick sort là một thuật toán chia để trị.Thuật toán sẽ chọn một phần tử trong chuỗi, mảng để làm điểm đánh dấu (pivot). Sau khi lựa chọn được điểm đánh dấu (pivot) sẽ thực hiện chia mảng thành các mảng con việc này gọi là phân đoạn (partition). Và lặp đi lặp lại như vậy. cho đến khi kết thúc

      Vì thế hiệu suât của QuickSort phụ thuộc vào các lựa chọn điểm đánh dấu pivot. và thuật toán phân đoạn Nếu lựa chọn pivot tốt, thì thuật toán sẽ có tốc độ nhanh hơn.

       

      Cách lựa chọn Pivot trong thuật toán sắp xếp nhanh:

      Trong một mảng, dãy số cho trước, chúng ta có thể lựa chọn pivot bằng các cách sau:

      1. Chọn phần từ đầu tiên của mảng
      2. Chọn phần tử cuối cùng của mảng
      3. Chọn phần tử random trong mảng
      4. Chọn phần tử có giá trị nằm giữa mảng
      5. Cho một mảng và xác định phần tử Xlà pivot
      6. Xử lý Đặt Xvào đúng vị trí của mảng đã sắp xếp
      7. Di chuyển tất cả các phần tử của mảng nhỏ hơn Xqua bên trai, và lớn hơn sang bên phải

      Khi đó ta sẽ có 2 mảng con: mảng bên trai của X và mảng bên phải của X. Tiếp tục công việc với mỗi mảng con(chọn pivot, phân đoạn) cho tới khi mảng được sắp xếp.

      Hướng dẫn code phân đoạn partition:

      • Đặt pivot là phần tử cuối cùng của dãy số arr.

      Ví dụ thuật toán phân đoạn :

      package gatostudy.com.sort;

      // Java program for implementation of QuickSort
      class QuickSort
      {
      /* This function takes last element as pivot,
      places the pivot element at its correct
      position in sorted array, and places all
      smaller (smaller than pivot) to left of
      pivot and all greater elements to right
      of pivot */
      int partition(int arr[], int low, int high)
      {
      int pivot = arr[high];
      int i = (low-1); // index of smaller element
      for (int j=low; j<high; j++)
      {
      // If current element is smaller than or
      // equal to pivot
      if (arr[j] < pivot)
      {
      i++;

      // swap arr[i] and arr[j]
      int temp = arr[i];
      arr[i] = arr[j];
      arr[j] = temp;
      }
      }

      // swap arr[i+1] and arr[high] (or pivot)
      int temp = arr[i+1];
      arr[i+1] = arr[high];
      arr[high] = temp;

      return i+1;
      }

      /* The main function that implements QuickSort()
      arr[] –> Array to be sorted,
      low –> Starting index,
      high –> Ending index */
      void sort(int arr[], int low, int high)
      {
      if (low < high)
      {
      /* pi is partitioning index, arr[pi] is
      now at right place */
      int pi = partition(arr, low, high);

      // Recursively sort elements before
      // partition and after partition
      sort(arr, low, pi-1);
      sort(arr, pi+1, high);
      }
      }

      /* A utility function to print array of size n */
      static void printArray(int arr[])
      {
      int n = arr.length;
      for (int i=0; i<n; ++i)
      System.out.print(arr[i]+” “);
      System.out.println();
      }

      // Driver program
      public static void main(String args[])
      {
      int arr[] = {10, 80, 30, 90, 40, 50, 70};
      int n = arr.length;

      QuickSort ob = new QuickSort();
      ob.sort(arr, 0, n-1);

      System.out.println(“sorted array”);
      printArray(arr);
      }
      }
      /*This code is contributed by Rajat Mishra */

       

       

      Đoạn sau mô tả cụ thể việc chia đoạn để lấy đặt đúng vị trí của pivot.

      arr[] = {10, 80, 30, 90, 40, 50, 70}
      Indexes:  0   1   2   3   4   5   6 
      
      low = 0, high =  6, pivot = arr[h] = 70
      Initialize index of smaller element, i = -1
      
      Traverse elements from j = low to high-1
      j = 0 : Since arr[j] <= pivot, do i++ and swap(arr[i], arr[j])
      i = 0 
      arr[] = {10, 80, 30, 90, 40, 50, 70} // No change as i and j 
                                           // are same
      
      j = 1 : Since arr[j] > pivot, do nothing
      // No change in i and arr[]
      
      j = 2 : Since arr[j] <= pivot, do i++ and swap(arr[i], arr[j])
      i = 1
      arr[] = {10, 30, 80, 90, 40, 50, 70} // We swap 80 and 30 
      
      j = 3 : Since arr[j] > pivot, do nothing
      // No change in i and arr[]
      
      j = 4 : Since arr[j] <= pivot, do i++ and swap(arr[i], arr[j])
      i = 2
      arr[] = {10, 30, 40, 90, 80, 50, 70} // 80 and 40 Swapped
      j = 5 : Since arr[j] <= pivot, do i++ and swap arr[i] with arr[j] 
      i = 3 
      arr[] = {10, 30, 40, 50, 80, 90, 70} // 90 and 50 Swapped 
      
      We come out of loop because j is now equal to high-1.
      Finally we place pivot at correct position by swapping
      arr[i+1] and arr[high] (or pivot) 
      arr[] = {10, 30, 40, 50, 70, 90, 80} // 80 and 70 Swapped

      Hy vọng bài viết giúp các bạn hiểu về thuật toán sắp xếp nhanh- QuickSort.

      Bài viết tham khảo từ https://www.geeksforgeeks.org/java-program-for-quicksort/

      Previous Post

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

      Next Post

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

      Next Post

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

      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 .