排序演算法之插入排序
- 2019 年 10 月 7 日
- 筆記
導
LEAD
語
感謝關注matlab愛好者公眾號!如果公眾號文章對您有幫助,別忘了點擊分享和「在看」哦!若您對公眾號有什麼意見或建議,請在公眾號中回復或在任意文章底部留言!
排序演算法在編程領域中起著舉足輕重的作用,在目標檢索、機器學習、數值計算、影像處理等領域有著廣泛地應用。為了追本溯源,公眾號特推出常用經典排序演算法系列推文,讓小夥伴們深入了解排序演算法的實現原理,同時也提升matlab編程能力。
今天給大家的介紹的排序演算法為:插入排序演算法,它是將無序序列分成兩部分,一部分為假設已經排列完成的序列,另一部分為餘下序列,將餘下序列中的元素取出插入到已排列完成的序列中,依次比較確定插入位置,下面就一起來看看該算的實現原理吧。
插入排序演算法實現過程(以升序排列為例):
對於長度為N的無序數組A,假定序列A(1)為排列完成的序列K,將A(2)與A(1)作比較,如果A(2)<A(1),則兩者交換,否則保持不變,即完成序列K的元素添加;將A(3)與A(2)比較,如果A(2)<A(3),則保持不變,否則兩者交換,繼續將A(3)與A(1)比較,如果A(3)>A(1),則兩者交換,否則保持不變;以此類推,將餘下序列中的元素取出插入到序列K中,從序列K尾部往首部進行比較,直至完成所有元素的插入。
matlab程式碼
主程式:main.m
format short; clc;clear; A = round(rand(1,8),2); nA = InsertSort(A); disp(['原始序列:',num2str(A)]); disp(['插入排序:',num2str(nA)]);
插入排序函數:InsertSort.m
function A = InsertSort(A) % 感謝關註:matlab愛好者 % 插入排序演算法源程式碼 % 作者:matlab愛好者 len = length(A); for w = 1:len-1 % 從餘下序列中取出一個元素插入到新序列中 for v = w+1:-1:2 if(A(v)<A(v-1)) % 如果新元素小於所插入位置的元素,則交換 tmp = A(v-1); A(v-1) = A(v); A(v) = tmp; else % 否則保持位置不變 break; end end end
效果圖

封面圖片:由PublicDomainPictures在Pixabay上發布