DANH MỤC TÀI LIỆU
Tìm hiểu về các thuật toán sắp xếp
Giới thiệu
Các thuật toán sắp xếp
1
Nội dung trình bày
Tiếp cận sắp xếp đơn giản
Sắp xếp chọn
Sắp xếp chèn
Sắp xếp nổi bọt
Tiếp cận sắp xếp độ phức tạp O(nlog(n))
Tiếp cận sắp xếp độ phức tạp O(nlog(n))
Sắp xếp theo phân đoạn (Quick sort)
Sắp xếp hòa nhập
Sắp xếp vung đống
Một số tiếp cận khác
Sắp xếp theo cơ số
Sắp xếp hòa nhập hai file lớn
2
Sắp xếp phân đoạn - quicksort
Ý tưởng
Cho một dãy, chọn một phần tử ở giữa, chia đoạn
thành 2 phần
Chuyển các phần tử nhỏ, hoặc bằng đến trước, các
phần tử lớn hơn về sau
phần tử lớn hơn về sau
Sẽ được nửa đầu bé hơn nửa sau
Lặp lại việc chuyển đổi cho các phần tử nửa đầu,
nửa sau đến lúc số phần tử là 1
3
Sắp xếp phân đoạn – quicksort (t)
Thuật toán ban đầu là chia: cố gắng chia thành
hai đoạn khác nhau
Trị: thực hiện các thuật toán sắp xếp trên các
đoạn con
Thực hiện kết hợp: thuật toán tự kết hợp kết
Thực hiện kết hợp: thuật toán tự kết hợp kết
quả
4
Sắp xếp phân đoạn – quicksort (t)
Phân đoạn
Chọn một phần tử chốt x (đầu tiên)
Duyệt từ vị trí tiếp theo sang phải tìm vị trí phần tử
đầu tiên >= x, i
Duyệt từ phải sang trái, tìm vị trí phần tử đầu tiên
Duyệt từ phải sang trái, tìm vị trí phần tử đầu tiên
<x, j
Nếu i<j thì hoán đổi vị trí
Tiếp tục đến lúc j<i
5
Sắp xếp phân đoạn – quicksort (t)
Thuật toán: partition
Input: A[l..r], l,r: đoạn cần phân chia
Ouput: A[l..r], i chi số phân chia
1. X=a[l]
2.
i=l+1;
2.
i=l+1;
3. J=r;
4. While (i<j)
a. While (i<j && a[i]<x) i++
b. While (j>=i && a[j]>=x) j—
c. If(i<j) swap(a[i],a[j])
5. Swap(a[l],a[j])
6. Return j; 6
thông tin tài liệu
Tài liệu cung cấp một cái nhìn khách quan về các thuật toán sắp xếp
Mở rộng để xem thêm
xem nhiều trong tuần
yêu cầu tài liệu
Giúp bạn tìm tài liệu chưa có

LÝ THUYẾT TOÁN


×