You are on page 1of 15

Bài thҧo luұn

Cơ Sӣ Lұp Trình

ĐӅ tài: J  

       !"#$ %&'()*    .

+ )%./ 01   .%. - . '( uhóm: 4 |ơ ӣ ұ .

  .

Sҳp xӃp chӑn II. Khái niӋm: 1. So sánh và đánh giá thuұt toán |ơ ӣ ұ . Sҳp xӃp nәi bӑt 2.Mөc lөc: I.

  .

ù  È ?2(3 .

& .

.8 9#$  : .4250 67) #$  .& -(.< È =)>?@8A)* )0 9 :  B . ) |ơ ӣ ұ .  .

  .

á u  `   .

bӑt nưӟc trên chìm xuӕng và bӑt nưӟc bên dưӟi nәi lên ( .     È i chҥy tӯ đҫu dãy đӃn vӏ trí [cuӕi dãy -1] È Khi a[i]>a[i+1] tӭc bӑt nưӟc bên trên nһng hơn bӑt nưӟc bên dưӟi.

.'< .

È Quá trình duyӋt. tráo đәi đưӧc lһp đi lһp lҥi cho đӃn khi duyӋt chӍ còn 2 phҫn tӱ và dãy sӁ đưӧc sҳp xӃp |ơ ӣ ұ .4Ö È Sau lưӧt 1 bӑt nưӟc nһng nhҩt sӁ chìm vӅ cuӕi dãy.   È i chҥy tӯ đҫu đӃn vӏ trí [cuӕi dãy -1] bӓ qua phҫn tӱ cuӕi cùng È Sau lưӧt thӭ 2 bӑt nưӟc nһng thӭ 2 sӁ chìm vӅ kӃ cұn đáy.

 .

|  .

vӅ bӑt sӁ chìm kӃ  nưӟc cұn đáy.     ¢‡i i chҥy chҥy tӯ đҫu tӯ đҫu dãyđӃn đӃn vӏ vӏ trí ƒ trí [cuӕi dãybӓ -1] qua phҫn [cuӕi dãy -1] ‡ cuӕi tӱ Khi cùng a[i]>a[i+1] tӭc bӑt ‡nưӟc Sau bên lưӧt thӭtrên nһngnưӟc 2 bӑt hơn bӑt nưӟc nһng thӭ 2bên dưӟi.   /  Mӛi phҫn tӱ trong dãy đưӧc xem như là mӝt bӑt nưӟc.đi'< lһp ( . nәi đәi lên  đưӧc . Trӑng lưӧng cӫa bӑt nưӟc thӭ i là giá trӏ cӫa A[i].trên chìm xuӕng và Èbӑt Quánưӟctrìnhbên dưӟitráo duyӋt.

lһp .

4Ö lҥi cho đӃn ‡ Sau khi lưӧtchӍ1 bӑt duyӋt còn nưӟc 2 phҫnnһng tӱ  nhҩt sӁ chìm vӅ cuӕi dãy. |ơ ӣ ұ .

 và dãy sӁ đưӧc sҳp xӃp  .

È /hi chú: uӃu trong mӝt lҫn duyӋt. |    . không phҧi đәi chӛ bҩt cӭ cһp phҫn tӱ nào thì danh sách đã đưӧc sҳp xӃp xong.

 .

h> Ÿinclude <conio.  Ÿinclude <stdio. j++Ö if(a[i]<a[j]Ö |ơ ӣ ұ .h> void SX_uoi_Bot(int sopt. swap. j<sopt. for(i=0. i<sopt.int a[10]Ö int i. i++Ö for(j=0. j.

  .

for (i=0.i+1Ö.i++Ö printf("uhap phan tu thu %d la: ".i. } SX_uoi_Bot(x. int x=10. printf("\n uhap mang: "Ö. a[j]=swap.aÖ. i<10. swap=a[i]. printf("\n------------------------------------------------------------------\n"Ö. scanf("%d". } } } main (Ö int a[10]. a[i]=a[j].&a[i]Ö. |ơ ӣ ұ .

  .

} |ơ ӣ ұ . i<10.i++Ö printf("uhap phan tu thu %d la: ".i+1Ö.a[i]Ö. printf("\n------------------------------------------------------------------\n"Ö. for (i=0. printf("Day sau khi sap xep"Ö.printf("\n------------------------------------------------------------------\n"Ö. printf("%5d\n". } getch(Ö.

  .

ø|     .

 .

  Ÿinclude<stdio.h++Ö for(j=0.i.j<10.j.j++Ö if(a[h]<a[j]Ö |ơ ӣ ұ . //nhap so lieu for(i=0.&a[i]Ö.h> main(Ö //khai bao bien int a[10].i<10. } // sap xep for(h=0.h<10.i++Ö printf("uhap phan tu thu %d la:".k.h.i+1Ö. scanf("%d".h> Ÿinclude<conio.

  .

a[j]=k.i<10.a[i]Ö. printf("\n------------------------------------------------------------------\n"Ö. a[h]=a[j]. } } //in ket qua printf("\n------------------------------------------------------------------\n"Ö. printf("Sau khi sap xep ta duoc ket qua:"Ö. return 0. } |ơ ӣ ұ . k=a[h].i+1.i++Ö printf("\n Phan thu thu %d la: %d ". getch (Ö. for(i=0.

  .

n-1 phҫn tӱ đã nҵm đúng vӏ trí. |ơ ӣ ұ .   Tư tưӣng: È Các bưӟc tiӃn hành như sau: È Bưӟc 1: i=1 È Bưӟc 2: Tìm phҫn tӱ a[min] nhӓ nhҩt trong dãy hiӋn hành tӯ a[i] đӃn a[n] È Bưӟc 3: Hoán vӏ a[min] và a[i] È Bưӟc 4: uӃu i<=n-1 thì i=i+1. Lһp lҥi bưӟc 2 È ugưӧc lҥi: Dӯng.

  .

j ++Ö if( a[j] < a[min]Ö min = j. a[min] = a[i]. min. } } |ơ ӣ ұ . for( i=0. for( j= i+1. i < n-1 . j < n. } swap = a[min].int a[10]Ö int i. j. a[i] = swap. swap./iҧi thuұt: //* dùng hàm*// void SX_Chon(int n. i ++Ö min = i.

  .

ââ       Tiêu chí /iҧi thuұt nәi bӑt /iҧi thuұt chӑn trӵc Cҩu trúc dӳ liӋu ugүu nhiên ugүu nhiên Phӭc tҥp thӡi gian Trung bình Ð(2Ö Trung bình Ð(2Ö Phӭc tҥp dӳ liӋu Không tӕn thêm Không tӕn thêm vùng nhӟ vùng nhӟ Tӕi ưu Không ThӍnh thoҧng |ơ ӣ ұ .

  .

ҳӃәӑ ҳӃӑ Trưӡn Sӕ lҫn so Sӕ lҫn hoán Sӕ lҫn so Sӕ lҫn hoán g hӧp sánh vӏ sánh vӏ Tӕt n(n-1Ö/2 0 nhҩt 0 Xҩu n(n-1Ö/2 3n(n-1Ö/2 nhҩt |ơ ӣ ұ .

  .

Cơ Sӣ Lұp Trình uHÓM 4 15 .