Danh mục: 49 Học Python – In ra các số nguyên tố trong mảng và tổng

49 Học Python – In ra các số nguyên tố trong mảng và tổng

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ạpHiệu suất
Sắp xếp nổi bọtO(n²)Chậm với mảng lớn
Sắp xếp nhanhO(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

 

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