[HSG_HCM_24] Sắp xếp

Xem dạng PDF

Gửi bài giải

Điểm: 1,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Pascal, Python

Sắp xếp nổi bọt (Bubble Sort) là một trong những thuật toán đơn giản và dễ hiểu. Thuật toán sắp xếp nổi bọt thực hiện sắp xếp dãy phần tử bằng cách liên tục lặp lại việc so sánh hai phần tử liền kề và hoán đổi vị trí của chúng nếu chung không theo thứ tự mong muốn. Quá trình này được lặp lại cho đến khi toàn bộ dãy đã được sắp xếp hoàn chỉnh.

Cho dãy số nguyên dương ~a~ gồm ~n~ phần tử ~a_1, a_2, ..., a_n~.

Yêu cầu

Hãy viết chương trình đếm số lần hoán đổi vị trí các phần tử theo thuật toán sắp xếp nổi bọt để sắp xếp dãy tăng dần.

Dữ liệu đầu vào

Gồm hai dòng:

  • Dòng thứ nhất chứa số nguyên dương ~n~ ~(1 \le n \le 2 \times 10^5)~ là số phần tử trong mảng.
  • Dòng thứ hai chứa ~n~ số nguyên dương ~a_1, a_2, ..., a_n~ ~(1 \le a_i \le 10^9;\ 1 \le i \le n)~ cách nhau một khoảng trắng là các phần tử trong dãy.

Dữ liệu đầu ra

Gồm một số nguyên duy nhất là số lần hoán đổi các vị trí khi thực hiện thuật toán sắp xếp nổi bọt.

Ràng buộc dữ liệu

  • 80% số điểm bài thi thỏa mãn ~1 \le n \le 10^3~.
  • 100% số điểm bài thi thỏa mãn ~1 \le n \le 2 \times 10^5~.

Ví dụ

Ví dụ 1
INPUT
4
3 1 4 2
OUTPUT
3

Giải thích: Theo thuật toán sắp xếp nổi bọt có ~3~ lần hoán đổi vị trí các phần tử gồm:

  • Lần thứ nhất, hoán đổi vị trí của hai phần tử ~(3, 1)~, dãy trở thành ~1, 3, 4, 2~.
  • Lần thứ hai, hoán đổi vị trí của hai phần tử ~(2, 4)~, dãy trở thành ~1, 3, 2, 4~.
  • Lần thứ ba, hoán đổi vị trí của hai phần tử ~(2, 3)~, dãy trở thành ~1, 2, 3, 4~.

Bình luận

Hãy đọc nội quy trước khi bình luận.



  • 0
    hoanglan_nd_502  đã bình luận lúc 19, Tháng 6, 2025, 7:45

    cái này là quicksort chứ có phải bbsort đâu