1. Trang chủ
  2. » Luận Văn - Báo Cáo

so sánh tốc độ các sort

4 245 0

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 4
Dung lượng 41,84 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Nguyễn Tiến Công.A2 Nội dung báo cáo: I.. Báo cáo quá trình thực hiện: Sinh viên 1 12-18/03 Tìm kiếm thông tin về thuật toán Quick sort trên mạng và thu thập dữ liệu.. Cả hai có hiểu biế

Trang 1

Lớp IT003.I22.KHCL – học kỳ II năm học 2017-2018

BÁO CÁO KẾT QUẢ THỬ NGHIỆM Thuật toán QUICKSORT

Thời gian thực hiện: 10/03 – 11/04/2018

Sinh viên thực hiện:

1 Dương Phúc Huân.(A1)

2 Nguyễn Tiến Công.(A2)

Nội dung báo cáo:

I Tóm tắt về thuật toán A

1 Ý tưởng:

Giải thuật QuickSort sắp xếp dãy a 1 , a 2 ., a N dựa trên việc phân hoạch dãy ban đầu thành 3 phần :

Phần 1: Gồm các phần tử có giá trị bé hơn x

Phần 2: Gồm các phần tử có giá trị bằng x

Phần 3: Gồm các phần tử có giá trị lớn hơn x

với x là giá trị của một phần tử tùy ý trong dãy ban đầu

 Sau khi thực hiện phân hoạch, dãy ban đầu được phân thành 3 đoạn:

• 1 ak ≤ x , với k = 1 j

• 2 ak = x , với k = j+1 i-1

• 3 ak  x , với k = i N

 Đoạn thứ 2 đã có thứ tự

 Nếu các đoạn 1 và 3 chỉ có 1 phần tử : đã có thứ tự

 khi đó dãy con ban đầu đã được sắp

 Đoạn thứ 2 đã có thứ tự

 Nếu các đoạn 1 và 3 có nhiều hơn 1 phần tử thì dãy ban đầu chỉ có thứ tự khi các đoạn 1, 3 được sắp

 Để sắp xếp các đoạn 1 và 3, ta lần lượt tiến hành việc phân hoạch từng dãy con theo cùng phương pháp phân hoạch dãy ban đầu vừa trình bày …

2 Thuật toán:

 Bước 1 : Chọn tùy ý một phần tử a[k] trong dãy là giá trị mốc ( left≤ k ≤ right):

Trang 2

x = a[k]; i = left; j = right

 Bước 2 : Phát hiện và hiệu chỉnh cặp phần tử

a[i], a[j] nằm sai chỗ :

 Bước 2a : Trong khi (a[i]<x) i++;

 Bước 2b : Trong khi (a[j]>x) j ;

 Bước 2c : Nếu i< j Swap(a[i],a[j]);

 Bước 3 : Nếu i < j: Lặp lại Bước 2 Ngược lại: Dừng

3 Minh họa với ví dụ cụ thể:

4 Cài đặt bằng NNLT cụ thể:

void QuickSort(long *&a, long left, long right)

{ long i, j, x;

x = a[(left+right)/2];

i = left; j = right;

{

while(a[i] < x) i++;

while(a[j] > x) j ;

if(i <= j)

{

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

i++ ; j ;

} } while(i <= j);

if(left<j)

QuickSort(a, left, j);

if(i<right)

QuickSort(a, i, right);

}

Trang 3

II Báo cáo quá trình thực hiện:

Sinh viên

1 12-18/03 Tìm kiếm thông tin về thuật toán Quick

sort trên mạng và thu thập dữ liệu

Cả hai có hiểu biết sơ bộ về thuật đề tài của nhóm

2 19-25/03 -Tìm kiếm và tạo ra 10 bộ dữ liệu để thực

nghiệm

-Tìm lệnh để đọc dữ liệu thực nghiệm vào thuật toán và lệnh đo tốc độ

Hoàn thành Cả 2 gặp với cùng

làm

3

26/03-01/04

-Hoàn thành 2 chương trình quicksort (c+

+), quicksort(c) -Sau đó tiến hành thực nghiệm qua 10 bộ

dữ liệu đòng thời tìm bộ nhớ cần thêm.Cuối cùng trình bày kết quả và đưa

ra kết luận

Còn 1 thuật toán chưa hoàn thành

-A1 viết chương trình -A2 thử nghiệm qua

10 bộ dữ liệu

4 02-08/04 Hoàn thành tiếp thuật toán và thực nghiệm

với sort(x)

Đưa toàn toàn bộ yêu những nội dung đã làm được vào mẫu báo cáo, và chỉnh sửa

Hoàn thành tiểu luận

- A1 trình bày vào mẫu

-A2 kiểm tra chỉnh sửa

III Kết quả thử nghiệm

Bộ dữ liệu

Kích

cỡ

Quicksort(C+

+) Qsort (C) Sort Quicksort(C+ +) Qsort (C) sort

triệu 1.072s 0.982s 0.991s 0.7MB 0.7MB 0.7MB

triệu 1.002s 1.037 0.992s 0.7MB 0.7MB 0.7MB

triệu

1.041s 1.282s 1.013s 0.7MB 0.7MB 0.7MB

triệu 1.193s 1.36s 1.012s 0.7MB 0.7MB 0.7MB

triệu

1.037s 1.01s 1.421s 0.7MB 0.7MB 0.7MB

triệu 1.125s 1.11s 1.359s 0.7MB 0.7MB 0.7MB

triệu 1.283s 1.291s 1.115s 0.7MB 0.7MB 0.7MB

triệu

1.346s 1.236s 1.11s 0.7MB 0.7MB 0.7MB

triệu 1.289s 0.979s 1.131s 0.7MB 0.7MB 0.7MB

triệu

1.092s 1.317s 1.514s 0.7MB 0.7MB 0.7MB

Trang 4

IV Kết luận;

-Với 1 triệu phần tử nguyên dương trong 1 lần test thì thời gian cũng như bộ nhớ cần thêm đa số không có sự chênh lệch quá lớn

-Một số bộ dữ liệu thử nghiêm qsort(C) và sort(c++) tốn ít thời gian hơn nhưng lại không đáng kể Còn lại phần lớn bộ dữ liệu thì đều cho ta thấy độ chênh lệch thời gian chạy của quicksort(c++) lớn hơn nhiều khi mà quicksort(c++) chậm hơn Điều đó cho thấy rằng quicksort(c++) có khả năng sắp xếp rất tốt, nhanh.

V Phụ lục:

1 Link download phần minh họa:

https://drive.google.com/file/d/0B2AOEKrrvKNPdHpTRWxrRWpzTWdrb1d6djh LcE9iSWRGajJV/view?usp=sharing

2 Link download mã

nguồn:https://drive.google.com/file/d/0B2AOEKrrvKNPU3pQX1FKcHlfR3hIdEF 6UE51bnU2UDJ0UTk0/view?usp=sharing

3 Link download dữ liệu thử nghiệm:

https://drive.google.com/file/d/185pRFY4baFLY0Ggprp3jE-wITy0jOV8d/view?

usp=sharing

Ngày đăng: 16/05/2018, 19:57

TỪ KHÓA LIÊN QUAN

w