精華區beta NTUE-CS101 關於我們 聯絡資訊
上一篇排序那邊我再講仔細一點好了 之前老師上課有教非陣列版的氣泡排序 int a=5,b=3,c=1,d=2,e=4,t; for(int i=0;i<5;i++) { if(a<b){ t=a; a=b; b=t; } if(b<c){ t=b; b=c; c=t; } if(c<d){ t=c; c=d; d=t; } if(d<e){ t=d; d=e; e=t; } } cout<<a<<"\n"<<b<<"\n"<<c<<"\n"<<d<<"\n"<<e; 裡面的四個if會把大的往a的方向集中 迴圈第一次把最大的放到a 第二次把次大的放到b 以此類推 接下來進入陣列版 int a[]={1,5,3,2,4}; int t; for(int i=0;i<5;i++) { if(a[0]<a[1]) { t=a[0]; a[0]=a[1]; a[1]=t; } if(a[1]<a[2]) { t=a[1]; a[1]=a[2]; a[2]=t; } if(a[2]<a[3]) { t=a[2]; a[2]=a[3]; a[3]=t; } if(a[3]<a[4]) { t=a[3]; a[3]=a[4]; a[4]=t; } } 一模一樣的東西 只是改成陣列 仔細看迴圈裡面的東西 四個if都是一樣的 只是改了[]裡面的數字 所以再用一個迴圈簡化 for(int i=0;i<5;i++) { for(int j=0;j<4;j++) { if(a[j]<a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t;} } } 裡面 int j=0 可以改成 int j=i 因為有些比較是多餘的 想想為什麼吧XD 排序的部份就講到這裡 下課~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.167.188.87
rockmyangel:為了程式期末考 我夜衝了 01/10 23:24
rockmyangel:感激YT學長 01/10 23:24
StranGhost:謝謝學長 01/11 02:32