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

Quicksort có nhiều biến thể và cách làm khác nhau

65 0 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Quicksort Có Nhiều Biến Thể Và Cách Làm Khác Nhau
Tác giả Vũ Cao Kỳ, Nguyễn Phước Ngọc Hương, Lờ Thanh Bảo Trõn
Người hướng dẫn Trần Thanh Bỡnh
Trường học Đại Học Quốc Gia Tp Hồ Chí Minh Trường Đại Học Bách Khoa
Thể loại Báo Cáo
Năm xuất bản 2023
Thành phố Thành Phố Hồ Chí Minh
Định dạng
Số trang 65
Dung lượng 9,39 MB

Nội dung

Đầu tiên ta chọn một phần tử làm pivot và phân chia mảng đã cho xung quanh pivot đã chọn bằng cách đặt phần tử lớn hơn pivot về bên phải pivot và phần tử nhỏ hơn pivot về bên trái của nó

Trang 1

Giảng viên hướng dẫn: Trần Thanh Bình

Sinh viên th c hi n ự ệ Mã s sinh viên

Nguy ễn Phướ c Ng ọc Hương 2252285

Lê Thanh B o Trân ả 2252833

Trang 2

2

M C L C Ụ Ụ

I Gi i pháp hi n th ả ệ ực 3

II Gi i thu ả ật 3

III Testcase 4

1 Th ng kê s ố ố lệnh và th i gian ch y các testcases ờ ạ 4

2 K t qu các testcases ế ả 5

IV Tài li u tham kh ệ ảo 65

Trang 3

I Giải pháp hi n th c ệ ự

- QuickSort có nhiều biến thể và cách làm khác nhau , nhưng về cơ bản, nó

là một thuật toán sắp xếp dựa trên phương pháp Chia để Trị Đầu tiên ta chọn một phần tử làm pivot và phân chia mảng đã cho xung quanh pivot đã chọn bằng cách đặt phần tử lớn hơn pivot về bên phải pivot và phần tử nhỏ hơn pivot về bên trái của nó

- Ở bài tập lớn này, chúng em đã thực hiện thuật toán như sau:

1 Chọn một giá trị pivot là giá trị của phần tử ở chính giữa mảng

2 Phân chia Sắp xếp lại các phần tử sao cho tất cả phần tử nhỏ hơn giá trị pivot sẽ được xếp sang phần bên trái của mảng, và tất cả phần tử lớn hơn pivot sẽ xếp sang phần bên phải của mảng Các phần tử bằng pivot có thể được xếp ở bất cứ vị trí nào trong mảng

3 Sau đó, ta sẽ đệ quy giải thuật trên hai phần bên trái và phải của mảng

II Giả i thu ật

- Giải thuật được hiện thực trong C++:

Trang 4

4

- Giải thích thuật toán:

Partition: Đặt hai biến đếm i và j, ban đầu sẽ chỉ tới phần tử đầu tiên, i

j sẽ chỉ tới phần tử cuối cùng của mảng Sau đó giải thuật sẽ tăng dần i tới khi gặp một phần tử lớn hơn hoặc bằng pivot Biến j sẽ giảm dần tới khi gặp phần tử bé hơn hoặc bằng pivot Nếu i ≤ j thì sẽ đổi chỗ hai phần tử đó và di chuyển biến đếm đến phần tử tiếp theo Partition sẽ dừng khi i lớn hơn j Sau khi partition, tất cả phần tử trước phần tử thứ

i sẽ bé hơn hoặc bằng pivot, tất cả phần tử sau phần tử thứ j sẽ lớn hơn hoặc bằng pivot

Recursion: Gọi lại hàm QuickSort trên hai phần trái phải của mảng

Trang 6

6

81.7059 -89.0000 99.1765 -27.7647 -95.4706 -34.1765 33.7059 -78.2353 -84.3529 -36.9412 52.4706 5.6471 -31.9412 -96.7647 72.3529 78.8824 -47.4706 -13.5294 -82.5294 -3.1176 -44.9412 11.6471 14.7647 -30.7059 39.2353 -69.0000 -81.2353 -100.0000 -24.9412 81.8824 2.2941 -45.2353 -78.8824 1.6471 -94.8824 37.3529 75.3529 5.1765 -10.2353

output: 100.0000 96.7647 95.4706 94.8824 89.0000 84.3529 82.5294 81.7059 81.2353 78.8824 78.2353 -69.0000 -64.0000 -52.6471 -47.4706 -45.2353 -44.9412 -38.3529 -36.9412 -36.2353 -34.1765 -31.9412 -30.7059 -27.7647 -24.9412 -18.5882 -13.5294 -10.2353 -3.1176 1.6471 2.2941 2.7647 4.5294 5.1765 5.6471 11.6471 14.7647 16.3529 33 4706 33.7059 37.3529 39.2353 52.4706 72.1765 72.3529 75.3529 78.8824 81.8824 99.1765 99.6471

Trang 8

-8

- Test 2:

input: 34.1176 26.6471 26.9412 6.2941 61.4706 60.1176 2.9412 72.5882 38.2941 17.7647 26.0588 46.2941 53.4706 -0.3529 -91.0000 10.6471 -45.7059 -2.9412 10.0000 -62.7647 17.2353 58.7059 -41.1176 -79.3529 59.2353 65.3529 29.5882 84.1765 64.2353 6.3529 43.5882 -44.2941 67.9412 -83.3529 -70.8824 35.4118 -84.1176 20.7059 55.8824 68.2941 -40.1176 31.3529 -21.1765 -4.0588 -67.5294 40.6471 44.7059 -72.4706 -31.5294 -87.3529

output: 91.0000 87.3529 84.1176 83.3529 79.3529 72.5882 72.4706 70.8824 67.5294 62.7647 46.2941 -45.7059 -44.2941 -41.1176 -40.1176 -38.2941 -31.5294 -26.9412 -26.6471 -21.1765 -17.7647 -4.0588 -2.9412 -2.9412 -0.3529 6.2941 6.3529 10.0000 10.6471 17.2353 20.7059 26.0588 29.5882 31.3529 34.1176 35.4118 40.6471 43.5882 44.7059 53.4706 55.8824 58.7059 59.2353 60.1176 61.4706 64.2353 65.3529 67.9412 68.2941 84.1765

Trang 10

-10

- Test 3:

input: 59.5294 89.7059 89.2353 64.5882 98.8235 78.0000 1.8235 59.2353 87.7647 23.2941 39.5882 58.4118 68.2941 36.3529 78.3529 33.1176 -47.8235 -99.5882 -45.9412 87.9412 31.4118 8.4118 -92.2941 -95.5294 -14.4118 -28.9412 -39.3529 -17.4706 -12.4118 36.0000 -38.7059 61.5294 91.3529 -85.8824 -21.6471 -18.1765 37.4706 0.0000 84.7647 64.1765 -65.8824 28.5294 -63.1765 -39.9412 -13.4706 -93.1765 81.2353 -85.2353 1.7647 95.8824

output: 99.5882 95.5294 93.1765 92.2941 89.2353 85.8824 85.2353 78.0000 65.8824 63.1765 59.5294 -58.4118 -47.8235 -45.9412 -39.9412 -39.3529 -38.7059 -28.9412 -23.2941 -21.6471 -18.1765 -17.4706 -14.4118 -13.4706 -12.4118 0.0000 1.7647 1.8235 8.4118 28.5294 31.4118 33.1176 36.0000 36.3529 37.4706 39.5882 59.2353 61.5294 64.1765 64.5882 68.2941 78.3529 81.2353 84.7647 87.7647 87.9412 89.7059 91.3529 95.8824 98.8235

Trang 12

-12

- Test 4:

input: 52.6471 69.6471 30.0588 -6.1765 59.4118 -84.6471 41.1176 84.2353 23.4706 43.5882 84.4706 86.9412 69.0588 23.7059 -61.0000 9.8824 30.2353 71.0588 7 0000 -13.6471 32.8824 -60.4706 29.8824 -30.8235 -21.1765 41.1176 -70.9412 28.1176 41.4118 89.0588 -99.2353 -86.7059 17.3529 -61.1176 8.1765 2.2353 67.2353 -85.1765 20.8235 9.7647 68.7059 -98.0588 -70.2941 9.9412 97.4706 35.5882 -83.4706 39.0000 -87.1176 -98.8235

output: 99.2353 98.8235 98.0588 87.1176 86.7059 85.1765 84.6471 83.4706 70.9412 70.2941 61.1176 -61.0000 -60.4706 -30.8235 -21.1765 -13.6471 -6.1765 2.2353 7.0000 8.1765 9.7647 9.8824 9.9412 17.3529 20.8235 23.4706 23.7059 28.1176 29.8824 30.0588 30.2353 32.8824 35.5882 39.0000 41.1176 41.1176 41.4118 43.5882 52.6471 59.4118 67.2353 68.7059 69.0588 69.6471 71.0588 84.2353 84.4706 86.9412 89.0588 97.4706

Trang 14

-14

- Test 5:

input: 87.1765 -44.6471 9.0588 -84.7647 -36.5294 -5.8824 54.9412 -55.0588 83.9412 -58.1176 -69.0000 -37.5294 -9.7647 96.4118 50.8824 -82.0000 19.2941 32.4706 76.0000 -4.1765 -30.2353 9.7647 -82.7059 64.4706 47.5294 84.0588 -66.4706 -74.2353 -20.6471 97.1176 1.1765 70.7059 74.2941 -43.4118 45.0588

Trang 15

-94.4706 20.4118 46.2353

output: 94.4706 86.0588 84.7647 82.7059 82.0000 74.2353 69.0000 66.4706 58.1176 55.0588 44.6471 -43.4118 -37.7647 -37.5294 -36.5294 -30.2353 -29.4118 -20.6471 -20.1765 -9.7647 -5.8824 -4.1765 1.1765 9.0588 9.7647 12.1765 19.2941 20.4118 32.4706 36.0000 40.7059 45.0588 46.2353 47.5294 50.8824 54.9412 60.7647 62.2941 64.4706 66.7647 67.58 82 70.7059 74.2941 76.0000 83.9412 84.0588 87.1765 93.9412 96.4118 97.1176

Trang 16

-16

- Test 6:

input: 78.0588 66.6471 44.7059 30.2353 41.6471 73.0000 37.8235 36.1176 78.8235 23.4706 99.8824 50.3529 9.8235 -2.5294 38.2353 -67.4118 - 65.0588 66.4706 35.4706 98.4706 1.3529 -21.6471 -4.0000 -68.8824 -86.5882 1.0588 83.7059 56.1765 13.9412 69.8824 - 6471 -50.0588 -70.4118 22.5294 -2.55.1176 64.8235 -10.9412 75.4706 -73.8824 -0.7647 -16.0000 -56.1765 50.8824 -15.2353 7.7059 4.7647 35.4706 95.1176 65.4706 51.8824

Trang 17

56.1765 55.1176 50.0588 44.7059 41.6471 37.8235 30.2353 23.4706 21.6471 16.0000 15.2353 10.9412 -4.0000 -2.6471 -2.5294 -0.7647 1.0588 1.3529 4.7647 7.7059 9.8235 13.9412 22.5294 35.4706 35.4706 36.1176 38.2353 50.3529 50.8824 51.8824 56.1765 64.8235 65.4706 66.4706 66.6471 69.8824 75.4706 83.7059 95.1176 98.4706

Trang 18

-18

- Test 7:

input: -20.1765 41.0000 14.5882 92.9412 -27.7059 92.7647 42.0588 -81.3529 -19.1176 48.3529 77.7059 -49.5882 83.3529 -15.2353 -79.0588 -51.2941 -65.7059 53.5294 80.1765 66.7647 -63.3529 79.4706 15.5294 -98.5294 70.4706 98.7647 19.1176 82.1176 44.7059 -59.4118 96.1176 -64.2353 -97.4706 20.9412 -16.2941 -17.2353 50.0588 -53.7059 76.0588 76.5294 -86.3529 23.5882 -13.9412 83.1765 51.5294 -37.1765 44.7647 -10.0000 -23.1765 35.2353

Trang 19

51.2941 49.5882 37.1765 27.7059 23.1765 20.1765 19.1176 17.2353 16.2941 15.2353 13.9412 10.0000 14.5882 15.5294 19.1176 20.9412 23.5882 35.2353 41.0000 42.0588 44.7059 44.7647 48.3529 50.0588 51.5294 53.5294 66.7647 70.4706 76.0588 76.5294 77.7059 79.4706 80.1765 82.1176 83.1765 83.3529 92.7647 92.9412 96.1176 98.7647

Trang 20

-20

- Test 8:

Trang 21

57.0000 55.7647 92.3529 20.0588 -84.7059 91.0588 -94.3529 69.4118 31.5294 56.5294 4.0588 14.2353 -45.8235 37.6471 28.4118 73.5294 -80.8235 52.0588 94.1176 58.2353 75.6471 -14.5294 59.8824 49.4706 94.5882 65.4706 30.1765 -9.1176 85.7059 -78.0588 56.9412 -62.3529 25.0588 90.2941 -3.0000 -68.4118 44.5882 21.1176 -39.7647 -70.7059

output: 94.3529 92.8824 84.7059 80.8235 78.0588 72.8235 71.1176 70.7059 69.4118 68.4118 66.0588 -62.3529 -56.5294 -45.8235 -39.7647 -38.6471 -31.5294 -28.5882 -24.0000 -16.3529 -14.5294 -14.2353 -9.1176 -3.0000 4.0588 20.0588 21.1176 25.0588 28.4118 29.5882 30.1765 37.6471 41.1176 44.5882 49.4706 52.0588 55.7647 56.9412 57.0000 58.2353 59.8824 65.4706 73.5294 75.6471 85.7059 90.2941 91.0588 92.3529 94.1176 94.5882

Trang 22

-22

- Test 9:

input: -80.8235 -78.2353 72.0588 64.6471 24.8824 33.0588 32.7647 49.1176 -55.0588 -41.5294 44.4706 -11.5294 -84.4118 -34.2353 -6.8235 65.4706 8.1176 -55.6471 62.5294 -97.2353 57.8824 -83.6471 -67.7647 38.1176 23.7647 -78.1765 72.8235 -58.4118 34.1176 0.0000 26.6471 11.4706 55.4706 72.6471 83.4706 42.2353 -86.2941 38.4118 -25.3529 1.4118 -51.8235 59.1176 -81.2353 42.8235 14.1176 23.4706 -85.0588 13.7647 -36.9412 61.8824

Trang 23

58.4118 -55.6471 -55.0588 -51.8235 -41.5294 -36.9412 -34.2353 -25.3529 -11.5294 -6.8235 0.0000 1.4118 8.1176 11.4706 13.7647 14.1176 23.4706 23.7647 24.8824 26.6471 32.7647 33.0588 34.1176 38.1176 38.4118 42.2353 42.8235 44.4706 49.1176 55.4706 57.8824 59.1176 61.8824 62.5294 64.6471 65.4706 72.0588 72.6471 72.8235 83.4706

Trang 24

24

- Test 10:

input: -66.3529 26.2353 -8.1176 47.9412 -62.6471 20.3529 17.1765 -46.3529 76.1176 -8.1765 -53.6471 38.7059 71.0588 -56.0000 -26.1765 -80.8824 -16.6471 -48.2941 71.1765 -82.6471 -30.2353 20.9412 40.8235 49.4118 58.4118 62.0000 63.0000 25.7059 91.6471 60.1176 75.4118 -48.0000 65.9412 85.7647 -16.0000 86.5294 65.5294 91.0000 -65.3529 -85.1176 -85.5882 -92.9412 -61.1176 64.7059 -72.6471 -39.3529 43.4118 -2.7647 -32.5882 -6.1176

Trang 25

56.0000 53.6471 48.2941 48.0000 46.3529 39.3529 32.5882 30.2353 26.1765 16.6471 16.0000 8.1765 -8.1176 -6.1176 -2.7647 17.1765 20.3529 20.9412 25.7059 26.2353 38.7059 40.8235 43.4118 47.9412 49.4118 58.4118 60.1176 62.0000 63.0000 64.7059 65.5294 65.9412 71.0588 71.1765 75.4118 76.1176 85.7647 86.5294 91.0000 91.6471

Trang 26

-26

Trang 27

- Test 11:

input: -24.9412 -52.1176 76.4706 -75.9412 -61.3529 -96.0588 -27.0000 58.8235 70.8235 90.1176 -54.5294 -73.9412 -2.3529 57.0000 -87.7059 98.4706 -54.0588 -34.2941 -64.4706 79.7647 -83.9412 -33.5294 -17.4706 23.1176 81.8824 -68.5294 94.0000 -57.2941 -96.8235 -98.7647 15.0588 4.1765 -48.9412 69.0588 -28.1765 -34.0588 76.5294 -28.0000 12.3529 -23.0588 82.0000 -48.5882 50.1765 69.8235 76.4706 18.8235 -6.0588 -59.9412 -35.4118 -57.9412

output: 98.7647 96.8235 96.0588 87.7059 83.9412 75.9412 73.9412 68.5294 64.4706 61.3529 59.9412 -57.9412 -57.2941 -54.5294 -54.0588 -52.1176 -48.9412 -48.5882 -35.4118 -34.2941 -34.0588 -33.5294 -28.1765 -28.0000 -27.0000 -24.9412 -23.0588 -17.4706 -6.0588 -2.3529 4.1765 12.3529 15.0588 18.8235 23.1176 50.1765 57.0000 58.8235 69.0588 69.8235 70.8235 76.4706 76.4706 76.5294 79.7647 81.8824 82.0000 90.1176 94.0000 98.4706

Trang 28

-28

Trang 29

- Test 12:

input: 40.8235 5.4118 77.9412 39.8235 92.1765 37.1765 20.4706 45.7059 97.8824 48.5882 60.0000 82.5294 21.3529 39.7059 -85.0000 -61.9412 -92.2941 -21.5294 -62.4118 70.8235 69.4118 -99.9412 -83.7059 -72.5882 -37.7647 -2.1176 76.4118 -58.7059 -54.8235 -91.5294 -33.2941 37.5882 55.1176 10.5882 74.1176 67.1176 2.0588 -64.1765 -48.7059 -41.6471 42.9412 91.7647 -58.0000 -38.2353 73.5882 -55.7647 -5.8235 -94.4706 7.8235 -13.6471

output: 99.9412 94.4706 92.2941 91.5294 85.0000 83.7059 82.5294 72.5882 64.1765 62.4118 61.9412 -60.0000 -58.7059 -58.0000 -55.7647 -54.8235 -48.7059 -48.5882 -41.6471 -39.8235 -38.2353 -37.7647 -37.1765 -33.2941 -21.5294 -13.6471 -5.8235 -5.4118 -2.1176 2.0588 7.8235 10.5882 20.4706 21.3529 37.5882 39.7059 40.8235 42.9412 45.7059 55.1176 67.1176 69.4118 70.8235 73.5882 74.1176 76.4118 77.9412 91.7647 92.1765 97.8824

Trang 30

-30

- Test 13:

input: 33.3529 53.7059 -47.9412 25.5882 -58.1765 93.2941 -84.8235 -41.5294 58.7647 -72.6471 -61.3529 38.8824 18.4706 -63.1765 -84.5882 -10.3529 -57.8824 -20.1765 25.1765 46.1765 33.3529 -81.7059 -6.3529 -29.2941 29.3529 29.0000 -80.9412 -84.9412 55.3529 51.2941 45.1176 6.4706 16.7059 -8.6471 20.5882 73.7647 -50.2353 95.2941 24.1176 -80.8235 -76.1176 17.4118 28.1176 -86.8824 -67.7647 12.7059 6.5294 63.6471 -20.5882 36.2941

output: 86.8824 84.9412 84.8235 84.5882 81.7059 80.9412 80.8235 76.1176 72.6471 67.7647 63.1765 -61.3529 -58.1765 -57.8824 -50.2353 -47.9412 -41.5294 -29.2941 -20.5882 -20.1765 -10.3529 -8.6471 -6.3529 6.4706 6.5294 12.7059 16.7059 17.4118 18.4706 20.5882 24.1176 25.1765 25.5882

Trang 31

-58.7647 63.6471 73.7647 93.2941 95.2941

Trang 32

32

- Test 14:

input: 77.6471 25.9412 75.7647 64.4706 10.0588 1.7059 4.7647 18.3529 77.2941 71.1765 5.4118 22.8824 -3.1765 -20.3529 -73.3529 6.7059 75.0000 70.6471 82.1176 1.7059 10.4706 -79.8824 46.1765 -66.0000 -36.7647 36.2941 1.4118 61.4706 16.6471 -40.2941 -65.3529 -94.2941 -23.7059 53.5882 -55.7059 -99.4118 28.8824 76.4706 -74.8824 12.0000 -59.5294 -79.1765 67.0000 87.1176 88.2353 -44.1765 69.0588 47.9412 26.2941 -64.1765

output: 99.4118 94.2941 79.8824 79.1765 77.6471 77.2941 74.8824 73.3529 66.0000 65.3529 64.1765 -59.5294 -55.7059 -44.1765 -40.2941 -36.7647 -25.9412 -23.7059 -22.8824 -20.3529 -18.3529 -4.7647 -3.1765 1.4118 1.7059 1.7059 5.4118 6.7059 10.0588 10.4706 12.0000 16.6471 26.2941 28.8824 36.2941 46.1765 47.9412 53.5882 61.4706 64.4706 67.00 00 69.0588 70.6471 71.1765 75.0000 75.7647 76.4706 82.1176 87.1176 88.2353

Trang 34

-34

- Test 15:

input: -21.0588 -78.7647 -61.2941 47.9412 -87.7059 60.7647 97.4118 -69.4118 31.3529 72.9412 84.4706 10.9412 -17.9412 93.5294 -53.9412 28.3529 -48.5294 21.2353 42.9412 -89.0000 64.5882 -66.8824 64.1765 -19.1176 -77.7647 71.9412 49.0000 -96.5294 44.4706 34.6471 83.9412 -47.3529 -7.2353 79.1765 2.5294 77.7647 80.6471 35.4118 58.7647 86.2353 -95.9412 -81.4118 17.8235 -77.5294 -39.6471 -70.1176 49.8824 -97.1176 99.5882 -91.5882

output: 97.1176 96.5294 95.9412 91.5882 89.0000 87.7059 81.4118 78.7647 77.7647 77.5294 70.1176 -69.4118 -66.8824 -61.2941 -53.9412 -48.5294 -47.3529 -39.6471 -21.0588 -19.1176 -17.9412 -7.2353 2.5294 10.9412 17.8235 21.2353 28.3529 31.3529 34.6471 35.4118 42.9412 44.4706 47.9412 49.0000 49.8824 58.7647 60.7647 64.1765 64.5882 71.94 12 72.9412 77.7647 79.1765 80.6471 83.9412 84.4706 86.2353 93.5294 97.4118 99.5882

Trang 36

-36

- Test 16:

input: -29.7647 -32.4706 -52.5882 -24.5882 -3.8235 69.6471 76.2353 -1.6471 43.2353 -91.7647 12.8235 16.5294 22.4118 -86.0000 -4.7647 -3.9412 -38.2941 -50.7059 16.0588 -86.3529 24.7647 -14.0588 60.7647 34.4118 -80.5294 -25.0000 -36.9412 -90.0000 -40.0588 -7.9412 -86.2941 74.2941 -32.1765 -43.5882 75.1765 -9.8824 -53.8235 -41.4706 -33.2941 -70.8824 -48.1765 -76.7647 4.0588 -20.2941 -88.1176 -58.8824 -32.6471 -99.0000 -56.5294 -43.8235

output: 99.0000 91.7647 90.0000 88.1176 86.3529 86.2941 86.0000 80.5294 76.7647 70.8824 58.8824 -56.5294 -53.8235 -52.5882 -50.7059 -48.1765 -43.8235 -43.5882 -41.4706 -40.0588 -38.2941 -36.9412 -33.2941 -32.6471 -32.4706 -32.1765 -29.7647 -25.0000 -24.5882 -20.2941 -14.0588 -9.8824 -7.9412 -4.7647 -3.9412 -3.8235 -1.6471 4.0588 12.8235 16.0588 16.5294 22.4118 24.7647 34.4118 43.2353 60.7647 69.6471 74.2941 75.1765 76.2353

Ngày đăng: 23/12/2024, 17:47

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

TÀI LIỆU LIÊN QUAN

w