排序算法之冒泡排序
- 2019 年 10 月 7 日
- 筆記
导
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
看完还想看 (点击下方文字直接访问)