冒泡排序法C语言解释

2020-10-27 教育 84阅读
既然要用外行的话来回答,我就打个简单的比喻吧。
【比喻】
假如你是体育老师,你前面有一排随机站立的学生,10个,高矮不一。如果你要用冒泡排序的思路来让他们从低到高来排队,你可以这样。
第一遍:
从左往右,第一个跟第二个比较,高的那么换到右边,接着第2个跟第3个比较,高的再换到右边。这样以此类推,第一遍做完后,你能保证最高的那个被移动到了队列最后。比如说姚*明同学。
第二遍:
如果我是体育老师,姚*明可以去玩手机了(呵呵),因为,第一轮已经能保证他是最高的,且已经站到最后了。那么我只要对前9位同学,把第一遍的动作再做一遍,那么你就可以保证找出第2高的同学,移动到姚*明左边了。一次类推。
【短评】
所谓冒泡,就是模拟池塘里的小气泡。你可以假定小的往上跑的快,大的跑的慢。那么水底到水面上就形成了一串大小不同的泡泡。
【截图注释】
bubble_sort(A)//函数名叫冒泡排序,需要传入一个数组A作为参数
{
for( i=1 to N-1)//10个人,其实排9轮就好了,最后一轮就一个人不用排
{
haschang=false;//用一个逻辑性变量记录排序过程中是否有数据交换,开始为false
for(j=1 to N-i)//每一轮要排序的人数是递减的, i是递增,所以每一次内循环N-i递减
{
if(A[j]>A[j+1])//如果A的第j个元素比后面那个大,就交换位置
{
temp=A[j];//先把A[j]做个备份
A[j]=A[j+1];//然后把A[j+1]装到A[j]中
A[j+1]=temp;//最后把原来备份的temp 放到A[j+1] 实现交换
haschange=true;//发生了数据交换,修改标识。
}
}
}
楼主好运。
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com