Rate this post

Bài 49: Sắp xếp mảng theo thứ tự tăng dần bằng Python

Giới Thiệu

  • Sắp xếp mảng theo thứ tự tăng dần là một bài toán cơ bản trong lập trình.
  • Có nhiều thuật toán có thể thực hiện nhiệm vụ này, từ đơn giản đến tối ưu hóa.
  • Trong bài viết này, chúng ta sẽ triển khai hai cách sắp xếp mảng: cách cơ bản với thuật toán Sắp xếp nổi bọt (Bubble Sort) và cách tối ưu hóa sử dụng thuật toán Sắp xếp nhanh (QuickSort).

Ưu Đãi lớn thêm danh sách 10 bài tập python  rèn luyện kỹ năng và nâng cao tay nghề:

  1. Bài 41: Đếm số chẵn trong mảng bằng Python
  2. Bài 42: Tính tổng các phần tử ở vị trí chẵn trong mảng bằng Python
  3. Bài 43: Tính tổng các phần tử có giá trị chẵn trong mảng bằng Python
  4. Bài 44: Tìm số x trong mảng bằng Python
  5. Bài 45 : Đếm và in dãy số dương, số âm trong mảng bằng Python
  6. Bài 46: In ra những số chia hết cho 5 và tổng của chúng trong mảng bằng Python
  7. Bài 47 : Tìm phần tử lớn nhất đầu tiên trong mảng và vị trí của phần tử đó bằng Python
  8. Bài 48: Tìm phần tử lớn nhất đầu tiên trong mảng và vị trí của phần tử đó bằng Python
  9. Bài 49: Sắp xếp mảng theo thứ tự tăng dần bằng Python
  10. Bài 50: In ra các số nguyên tố trong mảng và tính tổng của chúng bằng Python

Cách 1: Sử Dụng Thuật Toán Sắp Xếp Nổi Bọt (Đơn Giản)

 

# Hàm sắp xếp mảng theo thứ tự tăng dần bằng Sắp xếp nổi bọt

def sap_xep_noi_bot(mang):

    n = len(mang)

    for i in range(n - 1):

        for j in range(n - 1 - i):

            if mang[j] > mang[j + 1]:

                mang[j], mang[j + 1] = mang[j + 1], mang[j]  # Hoán đổi vị trí




# Nhập số lượng phần tử của mảng

n = int(input("Nhập số phần tử của mảng: "))

mang = [int(input(f"Nhập phần tử thứ {i+1}: ")) for i in range(n)]




# Gọi hàm sắp xếp

sap_xep_noi_bot(mang)

print("Mảng sau khi sắp xếp tăng dần:", mang)

 

Giải Thích:

  • Sắp xếp nổi bọt là một thuật toán sắp xếp đơn giản.
  • So sánh từng cặp phần tử và hoán đổi nếu phần tử trước lớn hơn phần tử sau.
  • Nhược điểm: Hiệu suất kém với mảng lớn (độ phức tạp O(n²)).

Cách 2: Sử Dụng Thuật Toán Sắp Xếp Nhanh (Tối Ưu Hóa)

 

# Hàm sắp xếp mảng theo thứ tự tăng dần bằng Sắp xếp nhanh

def sap_xep_nhanh(mang):

    if len(mang) <= 1:

        return mang

    chot = mang[len(mang) // 2]  # Chọn phần tử làm chốt

    trai = [x for x in mang if x < chot]

    giua = [x for x in mang if x == chot]

    phai = [x for x in mang if x > chot]

    return sap_xep_nhanh(trai) + giua + sap_xep_nhanh(phai)




# Nhập số lượng phần tử của mảng

n = int(input("Nhập số phần tử của mảng: "))

mang = [int(input(f"Nhập phần tử thứ {i+1}: ")) for i in range(n)]




# Gọi hàm sắp xếp

mang_sap_xep = sap_xep_nhanh(mang)

print("Mảng sau khi sắp xếp tăng dần:", mang_sap_xep)

 

Giải Thích:

  • Sắp xếp nhanh chia nhỏ mảng thành các phần nhỏ hơn dựa vào chốt và sắp xếp đệ quy.
  • Độ phức tạp trung bình O(n log n), nhanh hơn nhiều so với Sắp xếp nổi bọt.
  • Hiệu suất cao với các tập dữ liệu lớn.

So Sánh Hai Cách

Phương pháp Độ phức tạp Hiệu suất
Sắp xếp nổi bọt O(n²) Chậm với mảng lớn
Sắp xếp nhanh O(n log n) Nhanh hơn, tối ưu hơn

Ứng Dụng

  • Sắp xếp nổi bọt phù hợp khi dữ liệu nhỏ hoặc cần thuật toán dễ hiểu.
  • Sắp xếp nhanh phù hợp khi cần hiệu suất cao với tập dữ liệu lớn.

Kết Luận

Cả hai thuật toán đều giúp sắp xếp mảng theo thứ tự tăng dần. Nếu bạn làm việc với dữ liệu nhỏ, Sắp xếp nổi bọt có thể đủ dùng. Nhưng nếu xử lý dữ liệu lớn, Sắp xếp nhanh là lựa chọn tối ưu. Hãy thử nghiệm và lựa chọn thuật toán phù hợp cho từng trường hợp cụ thể!

Nếu bạn thấy hay ! xin bạn 1 phút ! vui lòng đánh giá 5 sao cho trang website của chúng tôi ! để có động lực làm thêm nhiều bài hay nữa ! cảm ơn quý khách nhé !

 

Khóa học Python online từ cơ bản đến nâng cao

Vi Tính Tấn Dân

Mình rất đam mê về máy vi tính và máy in. Và mình đã đeo đuổi ước mơ và làm việc về máy vi tính mới đây mà đã 15 năm. Mình thích chia sẻ mọi kiến thức và kinh nghiệm mà mình có được cho tất cả các bạn ! Trong khi mình viết nếu có điều gì thiếu sót mong các bạn thông cảm cho mình nhé ! Mình Cám ơn trước !

Published by
Vi Tính Tấn Dân

Recent Posts

100 triệu là mức lương của lập trình Python vì sao?

100 triệu là mức lương của lập trình Python vì sao? 1. Vì sao Python…

4 ngày ago

This website uses cookies.