作者yantchen (球童Yanting)
看板NTUE-CS101
標題[課業] 氣泡排序法
時間Sat Jan 10 00:10:05 2009
上一篇排序那邊我再講仔細一點好了
之前老師上課有教非陣列版的氣泡排序
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