Professional Documents
Culture Documents
Cơ Sở Lập Trình
I. Khái niệm:
1. Sắp xếp nổi bọt
2. Sắp xếp chọn
II. So sánh và đánh giá thuật toán
Lượt 2
i chạy từ đầu đến vị trí [cuối dãy -1] bỏ qua phần tử cuối cùng
Sau lượt thứ 2 bọt nước nặng thứ 2 sẽ chìm về kế cận đáy.
Quá trình duyệt, tráo đổi được lặp đi lặp lại cho đến khi duyệt
chỉ còn 2 phần tử và dãy sẽ được sắp xếp
Lượt 2
1
•• ii
chạy từ
chạy từ đầu
đầu dãyđến đến vị
vị trí
3 trí [cuối
[cuối dãy -1]dãy bỏ -1] qua phần
• cuối
tử Khi cùng
a[i]>a[i+1] tức bọt
2 •nước
Sau bên
lượt thứtrên 2 nặng hơn
bọt nước
bọt nước
nặng thứ 2bên dưới, về bọt
sẽ chìm kế
9 nước
cận trên chìm xuống và
đáy.
bọtQuánước
trìnhbên dướitráo
duyệt, nổi đổi
lên
(tráolặp
được đổiđivị lặp
trí) lại cho đến
7
• Sau
khi lượt
duyệt chỉ1 bọt
còn nước
2 phầnnặngtử
6 vànhất
dãysẽ
sẽchìm
đượcvề sắpcuối
xếpdãy.
Cơ Sở Lập Trình NHÓM 4 5
Ghi chú: Nếu trong một lần duyệt, không phải đổi chỗ bất
cứ cặp phần tử nào thì danh sách đã được sắp xếp xong.
Chương trình dùng hàm được mô tả như sau:
#include <stdio.h>
#include <conio.h>
void SX_Noi_Bot(int sopt,int a[10])
{
int i, j, swap;
for(i=0; i<sopt; i++)
for(j=0; j<sopt; j++)
{
if(a[i]<a[j])
Tư tưởng:
Các bước tiến hành như sau:
Bước 1: i=1
Bước 2: Tìm phần tử a[min] nhỏ nhất trong dãy hiện
hành từ a[i] đến a[n]
Bước 3: Hoán vị a[min] và a[i]
Bước 4: Nếu i<=n-1 thì i=i+1; Lặp lại bước 2
Ngược lại: Dừng. n-1 phần tử đã nằm đúng vị trí.
Phức tạp thời gian Trung bình O(n2) Trung bình O(n2)