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

Đồ Án chuyên nghành Đề tài tìm hiểu thuật toán sắp xếp

18 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 đề Tìm hiểu thuật toán sắp xếp
Tác giả Võ Văn Kiệt
Người hướng dẫn GS.NGUYỄN TRẦN QUỐC VINH
Trường học Đại học Đà Nẵng
Chuyên ngành Tin học
Thể loại Đồ án chuyên ngành
Năm xuất bản 2020
Thành phố Đà Nẵng
Định dạng
Số trang 18
Dung lượng 490,7 KB

Nội dung

ĐẠI HỌC ĐÀ NẴNGTRƯỜNG ĐẠI HỌC SƯ PHẠM KHOA TIN HỌC ĐỒ ÁN CHUYÊN NGHÀNH ĐỀ TÀI TÌM HIỂU THUẬT TOÁN SẮP XẾP Giáo viên hướng dẫn : GS.NGUYỄN TRẦN QUỐC VINH Sinh viên thực hiện : VÕ VĂN K

Trang 1

ĐẠI HỌC ĐÀ NẴNG

TRƯỜNG ĐẠI HỌC SƯ PHẠM KHOA TIN HỌC

ĐỒ ÁN CHUYÊN NGHÀNH

ĐỀ TÀI TÌM HIỂU THUẬT TOÁN SẮP XẾP

Giáo viên hướng dẫn : GS.NGUYỄN TRẦN QUỐC VINH Sinh viên thực hiện : VÕ VĂN KIỆT

Lớp sinh hoạt : 17CNTT3

Đà Nẵng, tháng 9 năm 2020

Trang 2

Thuật toán sắp xếp Bubble Sort

1 Sơ đồ khối của Thuật toán sắp xếp Bubble Sort:

True

false

True

True False

False

Bắt Đầu

Nhập Mảng

i>=0

&

i<n Swap=fale

A[j-1]>A[j]

Swap=True

SwapA[j],A[j-1]

j>n

Swap=False

Kết thúc

Trang 3

2 Mã nguồn thuật toán sắp xếp Bubble:

void Nhapmang(int A[],int n){

for (int i=0;i<n;i++){

cout<<"Nhap Phan Tu Thu A["<<i<<"]="; cin>>A[i];

}

}

void XuatMang(int A[],int n ){

cout<<endl;

for (int i=0;i<n;i++)

cout<<A[i]<<"\t";

}

void Swap(int &a,int &b){

int temp=a;

a=b;

b=temp;

}

void bubblesort(int A[],int n)

{

for (int i=0;i<n;i++)

for (int j=n-1;j>i;j )

if (A[j]<A[j-1])

swap(A[j-1],A[j]);

}

int main(){

int A[max],n;

cout<<"Nhap so phan tu :";

cin>>n;

Nhapmang(A,n);

cout<<"/n Mang vua nhap la :";

XuatMang(A,n);

cout<<endl;

bubblesort(A,n);

cout<<"Mang vua sap xep la : ";

XuatMang(A,n);

Trang 4

return 0;

}

3)Cho 3 dãy và chạy theo từng bước mã nguồn trên từng dãy:

- Mảng tăng dần : 1,4,6,9,10,12,15,18

-Mảng giảm dần : 18,15,12,10,9,6,4,1

-Mảng sắp xếp ngẩu nhiên : :4,1,6,12,18,15,9,10

Dãy 1 : 1,4,6,9,10,12,15,18

B1:Nhập mang A[8]= 1,4,6,9,10,12,15,18

B2:Vòng lặp for (int i=0;i<n;i++)

for (int j=n-1;j>i;j )

Đk : if (A[j]<A[j-1])

swap(A[j-1],A[j]);

-lần 1: for (i=0;i<8;i++)

for (j=7;j>0;j )

A[7]>A[6]

A[i]= 1,4,6,9,10,12,15,18

A[6]>A[5]

A[i]= 1,4,6,9,10,12,15,18

A[5]>A[4]

A[i]= 1,4,6,9,10,12,15,18

A[4]>A[3]

A[i]= 1,4,6,9,10,12,15,18

A[3]>A[2]

A[i]= 1,4,6,9,10,12,15,18

A[2]>A[1]

A[i]= 1,4,6,9,10,12,15,18

A[1]>A[0]

A[i]= 1,4,6,9,10,12,15,18

B3: In ra mảng đã sắp xếp A[i]= 1,4,6,9,10,12,15,18

Dãy 2: 18,15,12,10,9,6,4,1

B1:Nhập mang A[8]= 18,15,12,10,9,6,4,1

B2:Vòng lặp for (int i=0;i<n;i++)

for (int j=n-1;j>i;j )

Trang 5

Đk : if (A[j]<A[j-1]) swap(A[j-1],A[j]); -Lần 1: for (i=0;i<8;i++) for (j=7;j>0;j ) A[7]<A[6]

Swap(A[7],A[6])

A[i]= 18,15,12,10,9,6,1,4 A[6]<A[5]

Swap(A[6],A[5])

A[i]= 18,15,12,10,9,1,6,4 A[5]<A[4]

Swap(A[5],A[4])

A[i]= 18,15,12,10,1,9,6,4 A[4]<A[3]

Swap (A[4],A[3])

A[i]= 18,15,12,1,10,9,6,4 A[3]<A[2]

Swap(A[3],A[2])

A[i]= 18,15,1,12,10,9,6,4 A[2]<A[1]

Swap(A[2],A[1])

A[i]= 18,1,15,12,10,9,6,4 A[1]<A[0]

Swap(A[1],A[0])

A[i]= 1,18,15,12,10,9,6,4 -Lần 2: for (i=1;i<8;i++) for (j=7;j>0;j ) A[7]<A[6]

Swap(A[7],A[6])

A[i]= 1,18,15,12,10,9,4,6 A[6]<A[5]

Swap(A[6],A[5])

A[i]= 1,18,15,12,10,4,9,6 A[5]<A[4]

Swap(A[5],A[4])

Trang 6

A[i]= 1,18,15,12,4,10,9,6 A[4]<A[3]

Swap (A[4],A[3]) A[i]= 1,18,15,4,12,10,9,6 A[3]<A[2]

Swap(A[3],A[2]) A[i]= 1,18,4,15,12,10,9,6 A[2]<A[1]

Swap(A[2],A[1]) A[i]= 1,4,18,15,12,10,9,6 -Lần 3: for (i=2;i<8;i++) for (j=7;j>0;j ) A[7]<A[6]

Swap(A[7],A[6]) A[i]= 1,4,18,15,12,10,6,9 A[6]<A[5]

Swap(A[6],A[5]) A[i]= 1,4,18,15,12,6,10,9 A[5]<A[4]

Swap(A[5],A[4]) A[i]= 1,4,18,15,6,12,10,9 A[4]<A[3]

Swap (A[4],A[3]) A[i]= 1,4,18,6,15,12,10,9 A[3]<A[2]

Swap(A[3],A[2]) A[i]= 1,4,6,18,15,12,10,9 -Lần 4: for (i=3;i<8;i++) for (j=7;j>0;j ) A[7]<A[6]

Swap(A[7],A[6]) A[i]= 1,4,6,18,15,12,9,10 A[6]<A[5]

Swap(A[6],A[5]) A[i]= 1,4,6,18,15,9,12,10 A[5]<A[4]

Trang 7

A[i]= 1,4,6,18,9,15,12,10

A[4]<A[3]

Swap (A[4],A[3])

A[i]= 1,4,6,9,18,15,12,10

-Lần 5: for (i=4;i<8;i++)

for (j=7;j>0;j )

A[7]<A[6]

Swap(A[7],A[6])

A[i]= 1,4,6,9,18,15,10,12

A[6]<A[5]

Swap(A[6],A[5])

A[i]= 1,4,6,9,18,10,15,12

A[5]<A[4]

Swap(A[5],A[4])

A[i]= 1,4,6,9,10,18,15,12

-Lần 6: for (i=5;i<8;i++)

for (j=7;j>0;j )

A[7]<A[6]

Swap(A[7],A[6])

A[i]= 1,4,6,9,10,18,12,15

A[6]<A[5]

Swap(A[6],A[5])

A[i]= 1,4,6,9,10,12,18,15

-Lần 7: for (i=6;i<8;i++)

for (j=7;j>0;j )

A[7]<A[6]

Swap(A[7],A[6])

A[i]= 1,4,6,9,10,12,15,18

B3: In ra mảng đã sắp xếp A[i]= 1,4,6,9,10,12,15,18

Dãy 3 sắp xếp ngẫu nhiên: 4,1,6,12,18,15,9,10 B1:Nhập mang A[8]= 4,1,6,12,18,15,9,10

B2:Vòng lặp for (int i=0;i<n;i++)

for (int j=n-1;j>i;j )

Trang 8

Đk : if (A[j]<A[j-1]) swap(A[j-1],A[j]); lần 1: for (i=0;i<8;i++) for (j=7;j>0;j ) A[7]>A[6]

A[i]= 4,1,6,12,18,15,9,10 A[6]<A[5]

Swap(A[6],A[5])

A[i]= 4,1,6,12,18,9,15,10 A[5]<A[4]

Swap(A[5],A[4])

A[i]= 4,1,6,12,9,18,15,10 A[4]<A[3]

Swap (A[4],A[3])

A[i]= 4,1,6,9,12,18,15,10 A[3]>A[2]

A[i]= 4,1,6,9,12,18,15,10 A[2]<A[1]

A[i]= 4,1,6,9,12,18,15,10 A[1]<A[0]

Swap(A[1],A[0])

A[i]= 1,4,6,9,12,18,15,10 Lần 2: for (i=1;i<8;i++) for (j=7;j>0;j ) A[7]<A[6]

Swap(A[7],A[6])

A[i]= 1,4,6,9,12,18,10,15 A[6]<A[5]

Swap(A[6],A[5])

A[i]= 1,4,6,9,12,10,18,15 A[5]<A[4]

Swap(A[5],A[4])

A[i]= 1,4,6,9,10,12,18,15 A[4]>A[3]

A[i]= 1,4,6,9,10,12,18,15 A[3]>A[2]

Trang 9

A[i]= 1,4,6,9,10,12,18,15

A[2]>A[1]

A[i]= 1,4,6,9,10,12,18,15

Lần 3: for (i=2;i<8;i++)

for (j=7;j>0;j )

A[7]<A[6]

Swap(A[7],A[6])

A[i]= 1,4,6,9,10,12,15,18

A[6]>A[5]

A[i]= 1,4,6,9,10,12,15,18

A[5]>A[4]

A[i]= 1,4,6,9,10,12,15,18

A[4]>A[3]

A[i]= 1,4,6,9,10,12,15,18

A[3]>A[2]

A[i]= 1,4,6,9,10,12,15,18

B3: In ra mảng đã sắp xếp A[i]= 1,4,6,9,10,12,15,18

Trang 10

Thuật toán sắp xếp Selection

1) Sơ đồ khối của thuật toán sắp xếp Selection Sort :

Begin

For i=0 to n-2

i(min)=i

For j=i+1

to n-1

If (a(j)<a(i(min)

i(min)=j

end Swap a(i) And a(i(min))

Trang 11

2) Mã nguồn thuật toán sắp xếp chọn Selection Sort:

void NhapMang(int A[],int n){

for(int i=0;i<n;i++){

cout<<"Nhap phan tu thu A["<<i<<"]:= "; cin>>A[i];

}

}

void XuatMang(int A[],int n){

cout<<endl;

for(int i=0;i<n;i++)

cout<<A[i]<<"\t";

}

void swap(int &a ,int &b ){

int temp=a;

a=b;

b=temp;

}

void SelecitionSort(int A[], int n){

int min;

for (int i=0;i<n-1;i++){

min=i;

for (int j=i+1;j<n;j++)

if(A[min]>A[j])

min=j;

if(min!=i)

swap(A[i],A[min]);

}

}

int main(){

int A[max],n;

Trang 12

cout<<"Nhap so phan tu :";

cin>>n;

NhapMang(A,n);

cout<<" Mang A vua nhap la :";

XuatMang(A,n);

cout<<endl;

SelecitionSort(A,n);

cout<<"Mang vua sap xep la :";

XuatMang(A,n);

return 0;

}

3)Cho 3 dãy và chạy theo từng bước mã nguồn trên từng dãy:

- Mảng tăng dần : 1,4,6,9,10,12,15,18

-Mảng giảm dần : 18,15,12,10,9,6,4,1

-Mảng sắp xếp ngẩu nhiên : :4,1,6,12,18,15,9,10

1)Mảng sắp xếp ngẫu nhiên : 4,1,6,12,18,15,9,10

B1 Nhập mảng A[8]= 4,1,6,12,18,15,9,10

B2 Vòng lặp for (int i=0;i<n-1;i++){

Min =I;

for (int j=i+1;j<n;j++)

if (A[min]>A[j])

Min = j

Dk : If (Min !=I)

Swap (A[i] ,A[min])

Lần 1 : for for (int i=0;0<7;i++){

Min =i;

for (int j=1;j<n;j++)

A[0]>A[1]

Min=1

A[1] <A[2]

Min=1

A[1]<A[3]

Min=1

A[1]<A[4]

Trang 13

Min=1 A[1]<A[5] Min=1 A[1]<A[6] Min=1 A[1]<A[7]

Dk Min != i

Swap (A[0],A[1]) A[i]= 1,4,6,12,18,15,9,10 Lần 2 : for for (int i=1;1<7;i++){ Min =i; for (int j=2;j<n;j++) A[1]<A[2] Min=1 A[1] <A[3] Min=1 A[1]<A[4] Min=1 A[1]<A[5] Min=1 A[1]<A[6] Min=1 A[1]<A[7]

Dk if Min != i

A[i]= 1,4,6,12,18,15,9,10 Lần 3: for (int i=2;2<7;i++){ Min =i; for (int j=3;j<n;j++) A[2]<A[3] Min=2 A[2] <A[4] Min=2 A[2]<A[5] Min=2 A[2]<A[6] Min=2

Trang 14

A[2]<A[7] Min=2

Dk if Min != i

A[i]= 1,4,6,12,18,15,9,10 Lần 4: for (int i=3;3<7;i++){ Min =i; for (int j=4;j<n;j++) A[3]<A[4] Min=2 A[3] <A[5] Min=2 A[3]>A[6] Min=6 A[6]<A[7] Min=6

Dk if Min != i

Swap(A[3],A[6]

A[i]= 1,4,6,9,18,15,12,10 Lần 5: for (int i=4;4<7;i++){ Min =i; for (int j=5;j<n;j++) A[4]>A[5] Min=5 A[5] >A[6] Min=6 A[6]>A[7] Min=7

Dk if Min != i

Swap(A[4],A[7]

A[i]= 1,4,6,9,10,15,12,18 Lần 6: for (int i=5;5<7;i++){ Min =i; for (int j=6;j<n;j++) A[5]>A[6] Min=6 A[6] <A[7]

Trang 15

Min=6

Dk if Min != i

Swap(A[5],A[6]

A[i]= 1,4,6,9,10,12,15,18

B3: In ra mảng đã sắp xếp A[i]= 1,4,6,9,10,12,15,18 2)Mảng tăng dần : 1,4,6,9,10,12,15,18

B1 Nhập mảng A[8]= 1,4,6,9,10,12,15,18

B2 Vòng lặp for (int i=0;i<n-1;i++){

Min =I;

for (int j=i+1;j<n;j++)

if (A[min]>A[j])

Min = j

Dk : If (Min !=I)

Swap (A[i] ,A[min])

-Lần 1 for (i=0;0<7;i++)

Min=I;

for (int j=1;j<n;j++)

A[0] <A[1]

Min=0

A[0]<A[2]

Min=0

A[0]<A[3]

Min=0

A[0] <A[4]

Min=0

A[0]<A[5]

Min=0

A[0]<A[6]

Min=0

A[0]<A[7]

Min=0

Dk if Min != i

A[i]: 1,4,6,9,10,12,15,18

Trang 16

B3: In ra mảng đã sắp xếp A[i]= 1,4,6,9,10,12,15,18 3)Mảng giảm dần : 18,15,12,10,9,6,4,1

B1 Nhập mảng A[8]= 18,15,12,10,9,6,4,1 B2 Vòng lặp for (int i=0;i<n-1;i++){

Min =I;

for (int j=i+1;j<n;j++)

if (A[min]>A[j])

Min = j

Dk : If (Min !=I)

Swap (A[i] ,A[min])

Lần 1 : for for (int i=0;0<7;i++){

Min =i;

for (int j=1;j<n;j++)

A[0]>A[1]

Min=1

A[1] >A[2]

Min=2

A[2]>A[3]

Min=3

A[3]>A[4]

Min=4

A[4]>A[5]

Min=5

A[5]>A[6]

Min=6

A[6]>A[7]

Min=7

Dk Min != i

Swap (A[0],A[7])

A[i]= 1,15,12,10,9,6,4,18

Lần 2 : for (int i=1;1<7;i++){

Min =i;

for (int j=2;j<n;j++)

A[1]>A[2]

Min=2

Trang 17

A[2] >A[3] Min=3 A[3]>A[4] Min=4 A[4]>A[5] Min=5 A[5]>A[6] Min=6 A[6]<A[7] Min=6

Dk Min != i Swap (A[1],A[6]) A[i]= 1,4,12,10,9,6,15,18 Lần 3: for (int i=2;2<7;i++){ Min =i; for (int j=3;j<n;j++) A[2]>A[3] Min=3 A[3] >A[4] Min=4 A[4]>A[5] Min=5 A[5]<A[6] Min=5 A[5]<A[7] Min=5

Dk if Min != i

Swap (A[2],A[5]) A[i]= 1,4,6,10,9,12,15,18 Lần 4: for (int i=3;3<7;i++){ Min =i; for (int j=4;j<n;j++) A[3]>A[4] Min=4 A[4] <A[5] Min=4

Trang 18

A[4]>A[6]

Min=4

A[4]<A[7]

Min=4

Dk if Min != i

Swap(A[3],A[4])

A[i]= 1,4,6,9,10,12,15,18

B3: In ra mảng đã sắp xếp A[i]= 1,4,6,9,10,12,15,18

Thuật toán sắp xếp Radix Sort

adixRadix sort

Ngày đăng: 08/10/2024, 16:41

w