排序算法之冒泡排序

  • 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二維碼