前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >排序算法之冒泡排序

排序算法之冒泡排序

作者头像
巴山学长
发布2019-09-24 18:03:28
5630
发布2019-09-24 18:03:28
举报
文章被收录于专栏:巴山学长巴山学长

LEAD

感谢关注matlab爱好者公众号!如果公众号文章对您有帮助,别忘了点击分享和“在看”哦!若您对公众号有什么意见或建议,请在公众号中回复或在任意文章底部留言!

排序算法在编程领域中起着举足轻重的作用,在目标检索、机器学习、数值计算、图像处理等领域有着广泛地应用。为了追本溯源,公众号特推出常用经典排序算法系列推文,让小伙伴们深入了解排序算法的实现原理,同时也提升matlab编程能力。

今天给大家的介绍的排序算法为:冒泡排序算法,它与简单选择排序算法有些类似,不过它不是选择位置标记,而是直接将序列中两相邻元素进行交换,较大的元素下沉,较小的元素上浮,下面就一起来看看该算的实现原理吧。

冒泡排序算法实现过程(以升序排列为例):

对于长度为N的无序数组A,假设以A(1)为作为起始元素,将A(1)与A(2)作比较,如果A(1)>A(2),则两者交换,否则保持不变;然后将A(2)与A(3)比较,如果A(2)>A(3),则两者交换,否则保持不变;以此类推,直至A(n-1)与A(n)比较,如果A(n-1)>A(n),则两者交换,否则保持不变,这样即完成一次冒泡操作,最大的元素将沉至序列尾部;按照以上方法逐个完成冒泡操作,即可完成无序数组的排序。

matlab代码

主程序:main.m

format short;
clc;clear;
A = round(rand(1,10),2);
nA = BubbleSort(A);
disp(['原始序列:',num2str(A)]);
disp(['冒泡排序:',num2str(nA)]);

冒泡排序函数:BubbleSort.m

function A = BubbleSort(A)
% 感谢关注:matlab爱好者
% 冒泡选择排序算法源代码
% 作者:matlab爱好者

len = length(A);
% 外层循环控制冒泡操作移位

for w = 1:len
    % 内层循环进行相邻元素依次比较
    flag = 0; % 为了提高冒泡法效率,增加位置交换标识,
    % 位置交换标识值发生改变,说明序列还是无序状态,
    % 如果不发生改变,则说明已经完成排序,无需再进行后面的操作
    for v = 1:len-w
        if(A(v)>A(v+1))
            % 完成位置交换
            tmp = A(v);
            A(v) = A(v+1);
            A(v+1) = tmp;
            flag = 1;
        end       
    end
    if flag == 0
        break;
    end
end

封面图片:由DaKub在Pixabay上发布

参考资料:https://www.runoob.com/w3cnote/sort-algorithm-summary.html

看完还想看 (点击下方文字直接访问)

排序算法之简单选择排序

K_means聚类的matlab应用

开学福利大放送,matlab学习资料免费领

误差分析指标计算之matlab实现

matlab之随心所欲创建QR二维码

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 巴山学长 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档