排序算法之冒泡排序

  • 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

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

排序算法之简单选择排序

K_means聚类的matlab应用

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

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

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