作者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
1F:推 rockmyangel:为了程式期末考 我夜冲了 01/10 23:24
2F:→ rockmyangel:感激YT学长 01/10 23:24
3F:推 StranGhost:谢谢学长 01/11 02:32