Thuật toán Merge Sort

Trong bài viết này, mình sẽ cùng với các bạn tìm hiểu về một thuật toán dùng để sắp xếp các phần tử trong một mảng, thuật toán Merge Sort các bạn nhé!

OK,

Bây giờ, giả sử mình có một mảng gồm các con số có giá trị được sắp xếp như sau:

Thuật toán Merge Sort sẽ chia mảng của mình thành nhiều mảng con, cho đến khi mỗi mảng con chỉ còn một phần tử. Sau đó, nó sẽ so sánh giá trị của các mảng con để gom chúng lại với nhau thành những mảng con đã được sắp xếp. Và kết quả cuối cùng, chúng ta sẽ được một mảng đã được sắp xếp.

Trong ví dụ của mình, khi sử dụng thuật toán Merge Sort thì các bước chạy sẽ xảy ra như sau:

  • Bước 1: Chia mảng lớn thành hai mảng con:

  • Bước 2: Tiếp tục chia nhỏ

  • Bước 3: Vẫn còn mảng con chứa hơn 2 phần tử nên tiếp tục chia nhỏ

  • Bước 4: Bởi vì bây giờ tất cả các mảng đã hoàn toàn chứa 1 phần tử, nên giờ chúng ta sẽ so sánh giá trị và gom chúng lại:

  • Bước 5: Tiếp tục gom:

  • Kết quả:

Như các bạn thấy, sau vài bước chia rồi gom, mảng của mình đã được sắp xếp lại.

Ý tưởng là như thế, vậy giải thuật của thuật Merge Sort là gì? Mình xin nói với các bạn như sau.

trong đó giải thuật Merge sẽ như sau:

OK, sau đây mình sẽ trình bày các bạn cách hiện thực thuật toán Merge Sort với ngôn ngữ Java như sau:

Trong hiện thực thuật toán Merge Sort này, mình đã sử dụng thêm interface Comparator để làm so sánh giữa hai đối tượng của cùng một class.

Sau đây, mình sẽ sử dụng code ở trên để làm một ví dụ xem sao:

Kết quả:

Thuật toán Merge Sort

Add Comment