bài báo cáo

Post on 03-Jan-2016

54 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

Bài báo cáo. Nhóm 1. CÁC VẤN ĐỀ VỀ MẢNG. Sắp xếp mảng thông thường Sắp xếp mảng bằng đệ quy Tìm kiếm trên mảng. Sắp xếp. Sắp xếp chọn trực tiếp Sắp xếp chèn trực tiếp Sắp xếp Bublesort Sắp xếp Heapsort. - PowerPoint PPT Presentation

TRANSCRIPT

NSN

Bai bao cao

Nhom 1

NSN

CAC VÂN ĐÊ VÊ MANG

NSN

Săp xêp mang thông thương

Săp xêp mang băng đê quy

Tim kiêm trên mang

NSN

Săp xêp

• Săp xêp chon trưc tiêp

• Săp xêp chen trưc tiêp

• Săp xêp Bublesort

• Săp xêp Heapsort

NSNSăp xêp chon trưc tiêp

• Gia sư mang đa săp xêp tăng co n phân tư• Chon phân tư nho nhât đôi chô vơi phân tư

thư nhât• Tư n-1 phân tư con lai,ta cung chon ra phân tư

nho nhât,đôi chô cho phân tư thư hai• Tiêp tuc cho đên hêt mang

NSN

NSNCode

void ChonTrucTiep(int a[],int n)

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

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

+j)

if(a[min]>a[j]) min=j;if(i!=min)

DoiCho(a[i],a[min]);}XuatMang(a,n);

}

void ChonTrucTiepDeQui(int a[],int n,int i)

{int min;if(i>=n-1) return ;min=i;

VongLap2ChonTrucTiep(a,n,min,i+1);if(i!=min)

DoiCho(a[i],a[min]);

ChonTrucTiepDeQui(a,n,i+1);

}

NSNSăp xêp chen trưc tiêp

• Tư phân tư đâu tiên coi như la môt mang mơi co môt phân tư đa co thư tư

• Chen thêm phân tư thư 2 vao trươcnêu nho hơn hoăc sau(nêu lơn hơn) phân tư thư nhât đê co môt mang hai phân tư co thư tư.

• Cư tiêp tuc như thê cho đên hêt• Cuôi cung ta đươc môt mang co thư tư

NSN

4 9 1 3 57

NSNCode

void ChenTrucTiep(int a[],int n){

int x,k;for(int i=1;i<n;++i){

x=a[i];k=i-1;while(k>=0 &&

a[k]>x){

a[k+1]=a[k];k--;

}if(i!=k+1) a[k+1]=x;

}XuatMang(a,n);

}

void ChenTrucTiepDeQui(int a[],int n, int i)

{if(i>=n) return ;int x=a[i];int k=i-1;VongLap2ChenTrucTiep(a,x,k);a[k+1]=x;ChenTrucTiepDeQui(a,n,i+1);

}void VongLap2ChenTrucTiep(int

a[],int x,int &k){

if(!(k>=0 && a[k]>x)) return ;a[k+1] = a[k];k--;VongLap2ChenTrucTiep(a,x,k);

}

NSNBubble Sort

• Xet tuân tư tưng căp phân tưmôt tư tư cuôi mang đên đâu mang

• Đôi chô sao cho phân tư nho hơn đưng trươc phân tư con lai

• Lăp lai qua trinh nay cho đên khi không con viêc đô chô hai phân tư

• Khi đo ta se co kêt qua la môt mang đươc săp thư tư

NSN

1

4

2

6

3

8

7

5 1

5

7

8

2

4

3

6

1

2

5

7

8

3

4

6

1

2

3

5

7

8

4

6

1

2

3

4

5

7

8

6

1

2

3

4

5

6

7

8

1

2

3

4

5

6

7

8

NSNCode

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])

DoiCho(a[j],a[j-1]);XuatMang(a,n);

}

void NoiBotDeQui(int a[], int n, int i)

{if(i>=n) return ;VongLap2NoiBot(a,i,n-1);NoiBotDeQui(a,n,++i);

}void VongLap2NoiBot(int a[],

int i, int j){

if(j<i) return;if(a[j-1]>a[j])

DoiCho(a[j],a[j-1]);VongLap2NoiBot(a,i,--j);

}

NSN

Heapsort• Giai đoan1:

– Hiêu chinh danh sach đa cho thanh heap đâu tiên– Kêt qua la ta co heap thư nhât va phân tư đâu tiên

cua heap la phân tư co khoa nho nhât• Giai đoan 2:

– B1:Đưa phân tư nho nhât vê cuôi day băng cach hoan vi a[0] va a[n-1]

– B2:Loai bo phân tư ho nhât (phân tư ơ cuôi day) ra khoi day (n=n-1),phân con lai coi như la môt danh sach mơi

– B3:Nêu n>0 thi hiêu chinh danh sach mơi thanh môt heap mơi băng cachxet phân tư đâu tiên x=a[0].Sau khi hoan vi,tai vi tri mơi nêu x con co cac nut con thi ta điêu chinh tiêp.Cư tiêp tuc như thê cho đên khi x ko con nut con,lăp lai bươc1.Nêu n=0,giai thuât kêt thuc

• Ta đươc mang săp theo thư tư giam dân

NSN9 8 12 7 17 6 2 5 3

Heap 1 2 3 6 5 14 9 12 8 7

7 3 6 5 14 9 12 8 2

Heap 2 3 7 6 5 14 9 12 8 2

8 7 6 5 14 9 12 3 2

Heap 3 5 7 6 8 14 9 12 3 2

12 7 6 8 14 9 5 3 2

Heap 4 6 7 9 8 14 12 5 3 2

12 7 9 8 14 6 5 3 2

Heap 5 7 8 9 12 14 6 5 3 2

14 8 9 12 7 6 5 3 2

Heap 6 8 12 9 14 7 6 5 3 2

14 12 9 8 7 6 5 3 2

Heap 7 9 12 14 8 7 6 5 3 2

14 12 9 8 7 6 5 3 2

Heap 8 12 14 9 8 7 6 5 3 2

14 12 9 8 7 6 5 3 2

NSNCode

void HeapSort(int a[],int n){

int r,q;q=n/2-1;r=n-1;while(q>=0){

Sift(a,q,r);q=q-1;

}

DoiCho(a[0],a[r]);r--;while(r>0){

Sift(a,0,r);DoiCho(a[0],a[r]);r--;

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

DoiCho(a[i],a[n-i-1]);XuatMang(a,n);

}

NSNCode

void TaoHeab1DeQui(int a[],int q, int r)

{

if(q<0) return;

Sift1(a,q,r);

q=q-1;

TaoHeab1DeQui(a,q,r);

}

NSNCode

void TaoHeab234DeQui(int a[], int r){

if(r<=0) return;Sift1(a,0,r);DoiCho(a[0],a[r]);r--;TaoHeab234DeQui(a,r);

}

NSNCode

void HeabSortDeQui(int a[], int n,int q,int r){

TaoHeab1DeQui(a,q,r);DoiCho(a[0],a[r]);r--;TaoHeab234DeQui(a,r);

}

NSNCode

void Sift1(int a[],int q, int r){

int x,i,j;i=q;j=2*i+1;x=a[i];DeQuiVongWhileTrongSift(a,i,j,r,x);a[i]=x;

}

NSNCode

void DeQuiVongWhileTrongSift(int a[], int &i, int &j , int r,int& x)

{if(j>=r) return;if(j<r && a[j]>a[j+1])

j=j+1;if(x<a[j]) return;a[i]=a[j];i=j;j=2*i+1;DeQuiVongWhileTrongSift(a,i,j,r,x);

}

NSN

Tim kiêm

• Tim kiêm tuân tư

• Tim kiêm nhi phân

NSN

Tim kiêm tuân tư

• Cho môt mang chưa co thư tư

• Ta băt đâu tim kiêm tư phân tư đâu tiên

• Nêu phân tư nay không phai ta tim đên phân tư kê

• Cư như thê cho đên khi găp phân tư cân tim tim kiêm thanh công

• Hay cho đên khi đi hêt mangkhông tim thây phân tư cân tim

NSN

1 6 8 12 3 4 9 5 7

Tim x=3

X=

Tim kiêm thanh công

Tim x=10

Hêt mang không tin thây x=10

NSNCode

int TimKiemTuanTu(int a[],int n){

int x;cout<<"Cho biet phan tu muon tim kiem : ";cin>>x;for(int i=0;i<n;++i)

if(a[i]==x) return i;return -1;

}

NSN

Tim kiêm nhi phân

• Mang đa co thư tư• B1:pham vi tim kiêm ban đâu la toan bô danh sach• B2:Gan ptư x cân tim la ptư chinh giưa goi la y,so

sanh x va y– Nêu x=y:kêt thuc– Nêu x<y thi pham vi tim kiêm mơi la cac phân tư

năm trươc y– Nêu x>y: pham vi tim kiêm la cac [hân tư năm

phia sau y• B3:Nêu tôn tai pham vi tim kiêm mơi,lăp lai bươc

2,ngươc lai,giai thuât kêt thuc,tim kiêm thât bai

NSN

3 4 5 7 8 10 13

Tim x=10

10>7

tim thây

NSNCode

int TimKiemNhiPhan(int a[],int n,int x,int L,int R){

cout<<"Cho biet phan tu can tim : ";cin>>x;int u=(L+R)/2;if(a[u]==x)

return u;if(a[u]>x) return TimKiemNhiPhan(a,n,x,L,u-1);if(a[u]<x) return TimKiemNhiPhan(a,n,x,u+1,R);return -1;

}

The end

Thank you!!!

top related