Tìm kiếm theo tiêu đề

Tin tức cộng đồng

[MỜI HỢP TÁC] Các kỳ thi Olympic Quốc tế 2026 (IMO - IEO - ISO)

Kính gửi Quý Lãnh đạo, Ban Giám hiệu và Quý Thầy/Cô, FermatTech (Đối tác Google tại VN) phối hợp cùng SCO Ấn Độ trân trọng kính mời tham gia 3 kỳ thi uy tín dành cho HS từ lớp 1 - 12: - IMO: Olympic Toán Quốc tế. - IEO: Olympic Tiếng Anh Quốc tế. - ISO: Olympic Khoa học...
Xem tiếp

Tin tức thư viện

Chức năng Dừng xem quảng cáo trên violet.vn

12087057 Kính chào các thầy, cô! Hiện tại, kinh phí duy trì hệ thống dựa chủ yếu vào việc đặt quảng cáo trên hệ thống. Tuy nhiên, đôi khi có gây một số trở ngại đối với thầy, cô khi truy cập. Vì vậy, để thuận tiện trong việc sử dụng thư viện hệ thống đã cung cấp chức năng...
Xem tiếp

Hỗ trợ kĩ thuật

  • (024) 62 930 536
  • 0919 124 899
  • hotro@violet.vn

Liên hệ quảng cáo

  • (024) 66 745 632
  • 096 181 2005
  • contact@bachkim.vn

PP sắp xếp nổi bọt

Wait
  • Begin_button
  • Prev_button
  • Play_button
  • Stop_button
  • Next_button
  • End_button
  • 0 / 0
  • Loading_status
Nhấn vào đây để tải về
Báo tài liệu có sai sót
Nhắn tin cho tác giả
(Tài liệu chưa được thẩm định)
Nguồn:
Người gửi: Bùi Văn Hùng
Ngày gửi: 19h:37' 13-04-2017
Dung lượng: 321.0 KB
Số lượt tải: 25
Số lượt thích: 0 người
PHƯƠNG PHÁP SẮP XẾP NỔI BỌT

Sinh viên thực hiện: Bùi Văn Hùng
1. Ý TƯỞNG THUẬT TOÁN
Giả sử cần sắp xếp dãy gồm n phần tử a[1..n].
Đi từ trái sang phải mảng A. nếu gặp 2 phần tử kề nhau mà ngược thứ tự sắp xếp (Khóa của phần tử trước lớn hơn khóa của phần tử sau) thì đổi chỗ chúng cho nhau. Kết thúc bước đầu tiên A[n], ta được có giá trị lớn nhất trong dãy. Còn các phần tử nhỏ hơn sẽ được “nổi” dần lên trên.
Lặp lại quá trình trên với các đoạn đầu a[1..i] với I chạy giảm từ n xuống đến 2, ta sẽ nhận được toàn bộ dãy a[1..n] được sắp xếp.
Procedure BUBBLE_SORT(Var A:MT, n:integer)
Var i,j:Integer;
Begin
For i:=n downto 2 do
For j:=1 to i-1 do
If A[j] > A[j+1] then SWAP(A[i],A[j+1]);
End;
2. THỦ TỤC
SẮP XẾP NỔI BỌT (BUBBLE SORT)
8
15
3
10
5
9
i
Cho dãy khóa sắp xếp: 8 15 3 10 5 9
Có thể biểu diễn quá trình trên như sau:
3. VÍ DỤ
Phép toán tích cực: Phép toán so sánh
ở lần lặp thứ i, phép so sánh được thực hiện (i-1) lần.
ta có:
4. ĐỘ PHỨC TẠP

Nhận xét:
Trường hợp tại bước thứ i, các phần tử đều nằm đúng thứ tự thì ta có thể dừng thuật toán luôn.
Vậy ta có thể cải tiến thủ tục trên bằng cách thêm vào một biến kiểm tra kiểu Boolean, biến này sẽ nhận giá trị True nếu dãy đã sắp xếp đúng thứ tự và nhận giá trị False trong trường hợp ngược lại.
Procedure BUBBLE_SORT(Var A:MT; n:integer);
Var i,j: Integer;
kt:Boolean;
Begin
i:=n;
Kt:=False;
While (i>=2) and (not kt) do
Begin
Kt:=True;
For j:=1 to i-1 do
If A[j] > A[j+1] then
Begin
SWAP(A[i],A[j+1]);
Kt:=False;
End;
Dec(i);
End;
End;
 
Gửi ý kiến