Bình luận

Thông báo

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Test link

Các Thuật Toán Sắp Xếp Phần 2

Các Thuật Toán Sắp Xếp Phần 2 , Thuật Toán Sắp Xếp , Sắp Xếp Trộn, Sắp Xếp Nhanh
20 min read

Thuật Toán Sắp Xếp

Hế lô các bạn. Tiếp tục series thuật toán chúng ta sẽ tìm hiểu tiếp về thuật toán sắp xếp. Hôm nay mình sẽ chia sẻ tiếp cho các bạn thêm 2 cách sắp xếp nữa đó là sắp xếp trộn và sắp xếp nhanh.

Các Thuật Toán Sắp Xếp Phần 2 

Tìm Hiểu Thuật Toán

Không luyên thuyên nữa dưới đây sẽ là 2 thuật toán sắp xếp của hôm nay.

Sắp Xếp Trộn (Merge Sort):

Mô Tả Sắp Xếp Trộn:

  • Giải thuật dựa vào thuật toán chia để trị.
  • Đầu tiên ta sẽ chia đôi dãy ra thành 2 dãy nhỏ có độ dài bằng nhau.
  • Sau đó ta dùng đệ quy để tiếp tục chia các dãy nhỏ cho đến khi không chia được nữa.
  • Sau khi không chia được nữa ta sẽ trộn các dãy đã chia lại theo thứ tự yêu cầu của đề bài.
  • Đến khi thực hiện xong thuật toán đệ quy ta thu được dãy đã được sắp xếp.

Mã Nguồn Sắp Xếp Trộn:

Các bạn xem mã nguồn, đọc phần chú thích và làm lại để hiểu hơn nhé!

void merge(int arr[], int L, int M, int R) {
int i = L;
int j = M + 1;
int ta[128];
for (int k = L; k <= R; k++) {
// Trường hợp đã duyệt hết phần tử bên trái
if (i > M) ta[k] = arr[j];
// Trường hợp đã duyệt hết phần tử bên phải
else if (j > R) ta[k] = arr[i];
// So sánh và sắp xếp
else {
if (arr[i] < arr[j]) {
ta[k] = arr[i];
i++;
} else {
ta[k] = arr[j];
j++;
}
}
}
// Sắp xếp lại mảng arr[] từ mảng ta[]
for (int k = L; k <= R; k++) {
arr[k] = ta[k];
}
}
void mergeSort(int arr[], int L, int R) {
// Đệ quy chia nhỏ mảng arr[] đến khi không chia được nữa
if (L < R) {
int M = (L + R)/2;
mergeSort(arr, L, M);
mergeSort(arr, M + 1, R);
merge(arr, L, M, R);
}
}
view raw mergeSort.cpp hosted with ❤ by GitHub

Ví Dụ Sắp Xếp Trộn:


Sắp Xếp Trộn (Merge Sort)

Sắp Xếp Nhanh(Quick Sort)

Mô Tả Sắp Xếp Nhanh:

  • Chọn một phần tử bất kì làm trụ.
  • Sắp xếp các phần tử còn lại sao cho:
  • Các phần tử nhỏ hơn trụ nằm ở bên trái của trụ.
  • Các phần tử lớn hơn trụ nằm ở bên phải của trụ.
  • Tiếp tục dùng sắp xếp nhanh để sắp xếp các dãy con bên trái và phải trụ.

Mã Nguồn Sắp Xếp Nhanh:

Để không mất tính tổng quát mình chọn phần tử đầu tiên làm trụ.

int partition(int arr[], int L, int R) {
int pivot = arr[L]; // Lấy phần tử đầu tiên làm pivot
int i = L;
int j = R + 1;
while(i < j) {
// Tìm phần tử lớn hơn pivot
i++;
while(i <= R && arr[i] < pivot) {
i++;
}
// Tìm phần tử nhỏ hơn pivot
j--;
while(j >= L && arr[j] > pivot) {
j--;
}
// Hoán đổi 2 phần tử tìm được
swap(arr[i], arr[j]);
}
swap(arr[i], arr[j]);
swap(arr[L], arr[j]); // Đưa pivot vào giữa
return j; // return vị trí pivot
}
void quickSort(int arr[], int L, int R) {
if (L < R) {
int M = partition(arr, L, R);
// quickSort nửa nhỏ
if (L < M) {
quickSort(arr, L, M - 1);
}
// quickSort nửa lớn
if (M < R) {
quickSort(arr, M + 1, R);
}
}
}
view raw quickSort.cpp hosted with ❤ by GitHub

Ví Dụ Sắp Xếp Nhanh:


Sắp Xếp Nhanh(Quick Sort)

Lời Kết

Vậy là bài viết hôm nay mình đã chia sẻ cho các bạn thêm 2 thuật toán sắp xếp nữa đó là sắp xếp trộn và sắp xếp nhanh. Nếu có bất kì thắc mắc nào hãy comment ở bên dưới. Chúc các bạn giữa tuần vui vẻ và có một ngày làm việc hiệu quả!

Đánh Giá Bài Viết:
No pain, no gain !

You may like these posts

  • Hê lô các bạn, những ngày qua các mình nhận được rất nhiều yêu cầu về hướng dẫn cách thêm widget thông báo trên header. Chính vì vậy hôm nay mình sẽ hướng dẫn các bạn cách t…
  • Hiệu Ứng Thả Tim Khi Click Chuột Hí các bạn, chào mừng các bạn đã đến với bài viết tiếp theo của mình. Tiếp tục chuyên mục Blogger Tricks mình sẽ chia sẻ cho các bạn code th…
  • Hế lô mọi người, chào mừng các bạn đã đến với bài viết của mình. Hôm nay, mình sẽ chia sẻ cho các bạn code để tạo một trang 404. …
  •  SHARE CODE THÊM NÚT CONTACT  Tiếp tục chuyên mục Thủ Thuật Blogger sẽ là bài viết hướng dẫn thêm nút điện thoại liên lạc cho blog. Không nói nhiều chúng t…
  • TẠO BUTTON CHO BLOGSPOTA nhông sê ô, hôm nay lượn lờ trên google lượm được một vào quả button trông khá đẹp nên mình đã đem về test thử trên blog thấy ổn phết nên quyết định share …
  •  THAY CON TRỎ CHUỘT Nếu đã cảm thấy nhàm chán với kiểu dáng của con trỏ chuộc default. Bạn muốn làm một thứ gì đó mới mẻ hơn cho blog. Thì bài viết này là dành cho bạn. …

4 comments

  1. second ago
    sắp xếp thế kkk
    1. second ago
      Sắp xếp thế chư lị
  2. second ago
    xịn thế anh :3
    1. second ago
      KKK cũng được thôi em
© 2025Phạm Văn Linh. All rights reserved. Developed by Jago Desain

Đã phát hiện Ad Blocker

Vui lòng tắt trình chặn quảng cáo của bạn để tiếp tục!

  1. Click on the AdBlock icon in your browser.
    Nhấp vào biểu tượng AdBlock trong trình duyệt của bạn.
    Adblock
  2. Choose, Don't run on pages on this domain.
    Chọn "Always".
    Adblock
  3. The browser icon should have turned green.
    Biểu tượng trình duyệt phải chuyển sang màu xanh lá.
    Adblock
  4. Refresh the page if it didn't refresh automatically. Thanks!
    Làm mới trang nếu nó không tự động làm mới. Cảm ơn bạn rất nhiều!
  1. Click on the AdBlock Plus icon in your browser.
    Nhấp vào biểu tượng AdBlock Plus trong trình duyệt của bạn.
    Adblock
  2. Click the "This Website" button.
    Nhấp vào nút "Trang web này".
    Adblock
  3. The browser icon should have turned grey.
    Biểu tượng trình duyệt phải chuyển sang màu xám.
    Adblock