1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Môn học: Cấu trúc dữ liệu 1

36 289 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 36
Dung lượng 1,89 MB

Nội dung

Bài toán sắp xếp Định nghĩa  Sắp xếp là quá trình xử lý một danh sách các phần tử để đặt chúng theo một thứ tự thỏa mãn một tiêu chuẩn nào đó dựa trên nội dung thông tin lưu giữ tại

Trang 1

Môn học:

Cấu trúc dữ liệu 1

Chương 3-Phần 2: Sắp xếp

ThS Trương Thị Ngọc Phượng Khoa CNTT

Trường ĐHSPKT TP HCM

Trang 2

Chương 3 – Phần 2 – Sắp xếp 2 Trương Thị Ngọc Phượng - CNTT - SPKT

Trang 3

I Bài toán sắp xếp

 Định nghĩa

Sắp xếp là quá trình xử lý một danh sách các

phần tử để đặt chúng theo một thứ tự thỏa mãn một tiêu chuẩn nào đó dựa trên nội dung thông tin lưu giữ tại mỗi phần tử đó

 Sắp tăng hoặc sắp giảm

  Sử dụng kiểu dữ liệu mảng để minh họa

 Phân loại

 Sắp xếp nội

 Sắp xếp ngoại

Trang 4

Chương 3 – Phần 2 – Sắp xếp 4 Trương Thị Ngọc Phượng - CNTT - SPKT

Trang 5

IV PP đổi chỗ trực tiếp

Trang 6

Chương 3 – Phần 2 – Sắp xếp 6 Trương Thị Ngọc Phượng - CNTT - SPKT

IV PP đổi chỗ trực tiếp

 Giải thuật

Bước 1: i = 1;

Bước 2: j = i+1;

Trong khi mà j ≤ N thực hiện

Nếu a[j] < a[i] thì Hoán vị (a[i], a[j]);

Trang 7

IV PP đổi chỗ trực tiếp

Trang 8

Chương 3 – Phần 2 – Sắp xếp 8 Trương Thị Ngọc Phượng - CNTT - SPKT

IV PP đổi chỗ trực tiếp

Trang 9

IV PP đổi chỗ trực tiếp

 Đánh giá giải thuật

 Số phép so sánh ?

 Số phép hoán vị ?

 Độ phức tạp: O(n2)

Trang 10

Chương 3 – Phần 2 – Sắp xếp Trương Thị Ngọc Phượng -

Trang 12

Chương 3 – Phần 2 – Sắp xếp 12 Trương Thị Ngọc Phượng - CNTT - SPKT

Trang 14

Chương 3 – Phần 2 – Sắp xếp 14 Trương Thị Ngọc Phượng - CNTT - SPKT

Trang 16

Chương 3 – Phần 2 – Sắp xếp 16 Trương Thị Ngọc Phượng - CNTT - SPKT

Trang 17

III PP chèn trực tiếp

 Ý tưởng

 Chèn 1 số vào dãy có thứ tự để có 1 dãy mới cũng

có thứ tự Quá trình như sau:

 Xem a[1] là 1 dãy có thứ tự

 Chèn a[2] vào dãy a[1] để có dãy 2 phần tử có thứ tự

 Tiếp tục chèn các phần tử tiếp theo cho đến khi được dãy gồm tất cả các phần tử cần sắp xếp

Trang 18

Chương 3 – Phần 2 – Sắp xếp Trương Thị Ngọc Phượng - CNTT -

Trang 20

Chương 3 – Phần 2 – Sắp xếp 20 Trương Thị Ngọc Phượng - CNTT - SPKT

Trang 21

III PP chèn trực tiếp

 Đánh giá giải thuật

 Số phép so sánh ?

 Số phép gán ?

Trang 22

Chương 3 – Phần 2 – Sắp xếp 22 Trương Thị Ngọc Phượng - CNTT - SPKT

Trang 23

V PP nổi bọt

 Ý tưởng

 Phần tử nào “nhẹ” thì “nổi” lên phía đầu mảng

 Phần tử “nhẹ” hơn thì “nổi” cao hơn (đứng ở vị trí nhỏ hơn trong mảng)

  Ngược lại: Phần tử “nặng” sẽ “chìm” xuống cuối mảng

Trang 24

Chương 3 – Phần 2 – Sắp xếp 24 Trương Thị Ngọc Phượng - CNTT - SPKT

V PP nổi bọt

 Giải thuật

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] thì HoánVị(a[j], a[j-1]);

j = j-1;

end;

Bước 3: i = i+1;

Nếu i > N-1 thì DỪNGNgược lại: Lặp lại Bước 2;

Trang 26

Chương 3 – Phần 2 – Sắp xếp 26 Trương Thị Ngọc Phượng - CNTT - SPKT

Trang 27

V PP nổi bọt

 Đánh giá giải thuật

 Không nhận diện được tình trạng đã có thứ tự hay

có thứ tự từng phần trong mảng

 Phần tử nhỏ được đưa về đúng vị trí nhanh Phần

tử lớn được đưa về đúng vị trí chậm

 Cải tiến: Thuật toán ShakerSort

• Lượt đi: Đẩy phẩn tử nhỏ về đầu mảng

• Lượt về: Đẩy phần tử lớn về cuối mảng

Trang 28

Chương 3 – Phần 2 – Sắp xếp 28 Trương Thị Ngọc Phượng - CNTT - SPKT

V PP nổi bọt

 Đánh giá giải thuật

 Độ phức tạp: O(n2)

Trang 30

Chương 3 – Phần 2 – Sắp xếp 30 Trương Thị Ngọc Phượng - CNTT - SPKT

 Ý tưởng

 Cho x=a[k] là giá trị của một phần tử bất kỳ trong dãy

 Phân hoạch dãy ban đầu thành 2 phần

VI PP dựa trên phân hoạch

…Dãy con 1……. x ……Dãy con 2….

Các phần tử nhỏ hơn x Các phần tử lớn hơn hoac bang x

 Tiếp tục phân hoạch các dãy con

 DỪNG khi các dãy con đã có thứ tự

Trang 31

VI PP dựa trên phân hoạch

 Ví dụ

i=1

HV(a[1], a[6])j=6

i=2

HV(a[2], a[5])j=5

Trang 32

Chương 3 – Phần 2 – Sắp xếp 32 Trương Thị Ngọc Phượng - CNTT - SPKT

VI PP dựa trên phân hoạch

Trang 33

VI PP dựa trên phân hoạch

HoanVi(a[i], a[j]);

i++; j ;

} }while(i < j) if(left < j) QuickSort(a, left, j) ;

Trang 34

Chương 3 – Phần 2 – Sắp xếp 34 Trương Thị Ngọc Phượng - CNTT - SPKT

VI PP dựa trên phân hoạch

 Đánh giá giải thuật

 Trường hợp tốt nhất?

Trang 36

Chương 3 – Phần 2 – Sắp xếp 36 Trương Thị Ngọc Phượng - CNTT - SPKT

VII Bài tập

trình: C++, Pascal, Java các giải thuật sắp xếp

đã học.

sinh viên theo điểm trung bình

dãy số sau

2 23 9 0 5 4 -2 2 4 8

Ngày đăng: 23/01/2016, 10:22

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w