Tải bản đầy đủ (.pdf) (78 trang)

bài giảng cấu trúc dữ liệu và giải thuật chương 6: sắp xếp - ths. nguyễn thị khiêm hòa

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.52 MB, 78 trang )

Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
Chương 6:
Sắp xếp
Giảng viên: Ths. Nguyễn Thị Khiêm Hòa
Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
2
Nội dung
 Các phương pháp sắp xếp cơ bản
 Đánh giá các phương pháp
 Quick_Sort
 Heap_Sort
Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
3
Mục tiêu
 Trình bày các thuật toán thông dụng cho việc sắp xếp
trong (sắp xếp trên bộ nhớ trong - RAM)
 Minh họa các thuật toán
 Đánh giá thuật toán
Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
4
Đặt vấn đề
 Trong công việc hàng ngày cũng như các bài toán quản lý
kinh tế cần tìm kiếm dữ liệu
 Dễ dàng
 Nhanh chóng
 Ví dụ: danh sách sinh viên, từ điển …
Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
5
Sắp xếp (Sorting)
 Định nghĩa
 Sắp xếp là quá trình tổ chức lại một tập hợp k đối


tượng theo một trật tự nào đó
 Hai mô hình sắp xếp
 Sắp xếp trong (internal), các phần tử cần sắp xếp
được lưu sẵn trong RAM
 Sắp xếp ngoài (external), một số các phần tử cần sắp
xếp lưu trong RAM, còn lại được lưu ở bộ nhớ ngoài
Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
6
Các phương pháp sắp xếp cơ bản
 Phương pháp sắp xếp kiểu lựa chọn
 Phương pháp sắp xếp chèn
 Phương pháp sắp xếp đổi chỗ
Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
7
Phương pháp sắp xếp kiểu lựa chọn
(Selection Sort)
 Ý tưởng:
 Tìm phần tử nhỏ nhất đem về đầu dãy
 Loại phần tử này ra khỏi dãy
 Tiếp tục tìm phần tử nhỏ nhất của dãy còn lại.
 Thuật toán:
 Ở bước thứ i ta chọn trong A
i
, A
i+1
, …, A
n
phần tử có
khóa nhỏ nhất và đổi chỗ với A
i

.
 Sau n lượt ta có dãy A được sắp thứ tự
Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
8
 Ví dụ:
Cho dãy số:
Phương pháp sắp xếp kiểu lựa chọn
(Selection Sort)
i = 1
i = 2
i = 3
i = 4
i = 5
i = 6i = 7
Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
9
Phương pháp sắp xếp kiểu lựa chọn
(Selection Sort)
public void SelectionSort()
{
int min,vt;
for (int i = 0; i < idx-1; i++)
{
min = A[i];
vt = i;
for (int j = i + 1; j < idx; j++)
{
if (A[j] < min)
{
min = A[j];

vt = j;
}
}
if (vt != i)
{
A[vt] = A[i];
A[i] = min;
}
}
}
Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
10
Phương pháp sắp xếp chèn (Insertion Sort)
 Thuật toán:
 Dãy ban đầu A
1
,A
2
,…,A
n
xem như đã có đoạn gồm 1
phần tử A
1
đã được sắp.
 Thêm A
2
vào A
1
sẽ có đoạn A
1

A
2
đã được sắp.
 Thêm A
3
vào A
1
A
2
sẽ có đoạn A
1
A
2
A
3
đã được sắp.
 Tiếp tục cho đến khi thêm xong A
n
vào đoạn
A
1
,A
2
,…,A
n-1
sẽ có dãy A
1
,A
2
,…,A

n
đã được sắp xếp.
Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
11
Phương pháp sắp xếp chèn (Insertion Sort)
 Ví dụ:
 Cho dãy số:
i = 2
Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
12
Phương pháp sắp xếp chèn (Insertion Sort)
i = 3
Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
13
Phương pháp sắp xếp chèn (Insertion Sort)
i = 4
Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
14
Phương pháp sắp xếp chèn (Insertion Sort)
i = 5
Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
15
Phương pháp sắp xếp chèn (Insertion Sort)
i = 6
Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
16
Phương pháp sắp xếp chèn (Insertion Sort)
i = 7
Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
17

Phương pháp sắp xếp chèn (Insertion Sort)
i = 8
Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
18
Phương pháp sắp xếp chèn (Insertion Sort)
Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
19
Phương pháp sắp xếp chèn (Insertion Sort)
public void Insertion_Sort()
{
for (int i = 1; i < idx; i++)
{
int x = A[i];
int j = i - 1;
while ((j >= 0)&&(A[j] > x))
{
A[j + 1] = A[j];
j ;
}
A[j + 1] = x;
}
}
Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
20
Phương pháp sắp xếp đổi chỗ (Bubble Sort)
 Ý tưởng:
 Xét từ cuối dãy ngược về vị trí i
 Nếu hai phần tử kế cận ngược thứ tự thì đổi chỗ
cho nhau
 Thực hiện đến khi không còn phần tử để xét.

Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
21
 Thuật toán:
 Bước 1: i = 1;
 Bước 2: j = n;
 Trong khi j > i thực hiện:
 Nếu A
j
< A
j-1
: đổi chổ A
j
và A
j-1
 j = j - 1
 Bước 3: i = i +1
 Nếu i > n-1: Hết dãy -> Dừng
 Ngược lại: lặp lại bước 2.
Phương pháp sắp xếp đổi chỗ (Bubble Sort)
Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
22
Phương pháp sắp xếp đổi chỗ (Bubble Sort)
 Ví dụ:
 Cho dãy số:
i = 1
j = 7
j = 5
j = 4
j = 3
j = 2

Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
23
Phương pháp sắp xếp đổi chỗ (Bubble Sort)
i = 2
j = 6
j = 5
j = 3
Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
24
Phương pháp sắp xếp đổi chỗ (Bubble Sort)
i = 3
j = 6j = 4
Khoa Công nghệ Thông tin - Đại học Ngân hàng TP.HCM
25
Phương pháp sắp xếp đổi chỗ (Bubble Sort)
i = 4
j = 7j = 5

×