首页 热点资讯 义务教育 高等教育 出国留学 考研考公

冒泡排序法C语言解释

发布网友 发布时间:2022-04-21 17:49

我来回答

1个回答

热心网友 时间:2022-05-22 02:55

既然要用外行的话来回答,我就打个简单的比喻吧。
【比喻】
假如你是体育老师,你前面有一排随机站立的学生,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;//发生了数据交换,修改标识。
}
}
}
楼主好运。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com