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

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

Đ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

Môn học: Cấu trúc liệu 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 Nội dung I Bài toán xếp II PP đổi chỗ trực tiếp (Interchange sort) III PP chọn trực tiếp (Selection sort) IV PP chèn trực tiếp (Insertion sort) V PP bọt (Bubble sort) VI PP dựa phân hoạch (Quick sort) VII Bài tập Chương – Phần – Sắp xếp Trương Thị Ngọc Phượng - CNTT - SPKT I Bài toán xếp  Định nghĩa  Sắp xếp trình xử lý danh sách phần tử để đặt chúng theo thứ tự thỏa mãn tiêu chuẩn dựa nội dung thông tin lưu giữ phần tử  Sắp tăng giảm   Sử dụng kiểu liệu mảng để minh họa  Phân loại  Sắp xếp nội  Sắp xếp ngoại Chương – Phần – Sắp xếp Trương Thị Ngọc Phượng - CNTT - SPKT Nội dung I Bài toán xếp II PP đổi chỗ trực tiếp (Interchange sort) III PP chọn trực tiếp (Selection sort) IV PP chèn trực tiếp (Insertion sort) V PP bọt (Bubble sort) VI PP dựa phân hoạch (Quick sort) VII Bài tập Chương – Phần – Sắp xếp Trương Thị Ngọc Phượng - CNTT - SPKT IV PP đổi chỗ trực tiếp  Ý tưởng  Xét tất cặp phần tử mảng  Phần tử nhỏ đứng trước  Là phương pháp đơn giản Chương – Phần – Sắp xếp 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 mà j ≤ N thực Nếu a[j] < a[i] Hoán vị (a[i], a[j]); j = j+1; end; Bước 3: i = i+1; Nếu i < N: Lặp lại bước 2; Ngược lại: DỪNG Chương – Phần – Sắp xếp Trương Thị Ngọc Phượng - CNTT - SPKT IV PP đổi chỗ trực tiếp  Ví dụ i=1, j=2 15 Không hoán vị i=1, j=3 15 HV(a[1], a[3]) i=1, j=4 15 Không hoán vị i=1, j=5 15 Không hoán vị i=1, j=6 15 Không hoán vị i=1, j=7 15 Không hoán vị Chương – Phần – Sắp xếp Trương Thị Ngọc Phượng - CNTT - SPKT IV PP đổi chỗ trực tiếp  Ví dụ i=2, j=3 15 HV(a[2], a[3]) DỪNG ………… ………… i=6, j=7 15 Giải thuật dừng Chương – Phần – Sắp xếp Trương Thị Ngọc Phượng - CNTT - SPKT 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) Chương – Phần – Sắp xếp Trương Thị Ngọc Phượng - CNTT - SPKT Nội dung I Bài toán xếp II PP đổi chỗ trực tiếp (Interchange sort) III PP chọn trực tiếp (Selection sort) IV PP chèn trực tiếp (Insertion sort) V PP bọt (Bubble sort) VI PP dựa phân hoạch (Quick sort) VII Bài tập Chương – Phần – Sắp xếp 10 Trương Thị Ngọc Phượng - Nội dung I Bài toán xếp II PP đổi chỗ trực tiếp (Interchange sort) III PP chọn trực tiếp (Selection sort) IV PP chèn trực tiếp (Insertion sort) V PP bọt (Bubble sort) VI PP dựa phân hoạch (Quick sort) VII Bài tập Chương – Phần – Sắp xếp 22 Trương Thị Ngọc Phượng - CNTT - SPKT V PP bọt  Ý tưởng  Phần tử “nhẹ” “nổi” lên phía đầu mảng  Phần tử “nhẹ” “nổi” cao (đứng vị trí nhỏ mảng)   Ngược lại: Phần tử “nặng” “chìm” xuống cuối mảng Chương – Phần – Sắp xếp 23 Trương Thị Ngọc Phượng - CNTT - SPKT V PP bọt  Giải thuật Bước 1: i = 1; Bước 2: j = N; Trong j > i thực hiện: Nếu a[j] < a[j-1] HoánVị(a[j], a[j-1]); j = j-1; end; Bước 3: i = i+1; Nếu i > N-1 DỪNG Ngược lại: Lặp lại Bước 2; Chương – Phần – Sắp xếp 24 Trương Thị Ngọc Phượng - CNTT - SPKT V PP bọt  Ví dụ i=1 15 j=7 i=1 i=1 15 j=5 i=1 i=1 j=4 15 j=6 15 Không hoán vị 15 j=3 Chương – Phần – Sắp xếp 25 Trương Thị Ngọc Phượng - CNTT - SPKT V PP bọt  Ví dụ i=1 i=1 j=2 j=1 15 15 ……………………… Chương – Phần – Sắp xếp 26 15 DỪNG Trương Thị Ngọc Phượng - CNTT - SPKT V PP bọt  Đánh giá giải thuật  Không nhận diện tình trạng có thứ tự hay có thứ tự phần mảng  Phần tử nhỏ đưa vị trí nhanh Phần tử lớn đưa vị trí chậm  Cải tiến: Thuật toán ShakerSort • Lượt đi: Đẩy phẩn tử nhỏ đầu mảng • Lượt về: Đẩy phần tử lớn cuối mảng Chương – Phần – Sắp xếp 27 Trương Thị Ngọc Phượng - CNTT - SPKT V PP bọt  Đánh giá giải thuật  Độ phức tạp: O(n2) Chương – Phần – Sắp xếp 28 Trương Thị Ngọc Phượng - CNTT - SPKT Nội dung I Bài toán xếp II PP đổi chỗ trực tiếp (Interchange sort) III PP chọn trực tiếp (Selection sort) IV PP chèn trực tiếp (Insertion sort) V PP bọt (Bubble sort) VI PP dựa phân hoạch (Quick sort) VII Bài tập Chương – Phần – Sắp xếp 29 Trương Thị Ngọc Phượng - CNTT - SPKT VI PP dựa phân hoạch  Ý tưởng  Cho x=a[k] giá trị phần tử dãy  Phân hoạch dãy ban đầu thành phần x …Dãy 1…… Các phần tử nhỏ x ……Dãy 2… Các phần tử lớn hoac bang x  Tiếp tục phân hoạch dãy  DỪNG dãy có thứ tự Chương – Phần – Sắp xếp 30 Trương Thị Ngọc Phượng - CNTT - SPKT VI PP dựa phân hoạch  Ví dụ Phân hoạch Dãy ban đầu i=1 8 i=2 3 15 j=6 HV(a[1], a[6]) 15 j=5 HV(a[2], a[5]) HV(a[2], a[5]) Dãy Chương – Phần – Sắp xếp 15 Dãy 31 Trương Thị Ngọc Phượng - CNTT - SPKT VI PP dựa phân hoạch  Ví dụ Phân hoạch Dãy 2 15 i=2 j=3 15 1 15 Dãy 1.1 Phân hoạch Dãy 1.1 15 15 Chương – Phần – Sắp xếp 32 Trương Thị Ngọc Phượng - CNTT - SPKT VI PP dựa phân hoạch  Giải thuật void QuickSort(int a[], int left, int right) { int i, j; int x; x = a[(left + right)/2]; i=left; j=right; do{ while(a[i] < x) i++; while(a[j] > x) j ; if(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ỪNG Ngược lại: Lặp lại Bước 2; 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  Ví dụ i =1 6 9 1 3 7 15 2 j=7 i =1 6 9 1 3 7 i =1 6 9 1 3 2 7 15 j=5 i =1 6 9 1 i =1 6 9 1 2 3 j=4 2 3 2 15 j=6 7 15 Không hoán vị 7 15 j=3 Chương... i ... bọt  Ví dụ i =1 15 j=7 i =1 i =1 15 j=5 i =1 i =1 j=4 15 j=6 15 Không hoán vị 15 j=3 Chương – Phần – Sắp xếp 25 Trương Thị Ngọc Phượng - CNTT - SPKT V PP bọt  Ví dụ i =1 i =1 j=2 j =1 15 15 ………………………... đổi chỗ trực tiếp  Ví dụ i =1, j=2 15 Không hoán vị i =1, j=3 15 HV(a [1] , a[3]) i =1, j=4 15 Không hoán vị i =1, j=5 15 Không hoán vị i =1, j=6 15 Không hoán vị i =1, j=7 15 Không hoán vị Chương – Phần... Phượng - CNTT - SPKT VI PP dựa phân hoạch  Ví dụ Phân hoạch Dãy 2 15 i=2 j=3 15 1 15 Dãy 1. 1 Phân hoạch Dãy 1. 1 15 15 Chương – Phần – Sắp xếp 32 Trương Thị Ngọc Phượng - CNTT - SPKT VI PP dựa

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

Mục lục

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

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

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

    II. PP chọn trực tiếp

    III. PP chèn trực tiếp

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

Tài liệu cùng người dùng

Tài liệu liên quan