作者:绿皮长条瓜
目录
一、算法介绍
二、MATLAB实现
三、两个例子
一、算法介绍
冒泡排序(Bubble Sort)算法是一种计算科学领域的较简单的排序算法。它重复地走访过要排序的元素列,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。
算法步骤如下:
- step1:比较相邻的元素,如果第一个比第二个大,就交换他们两个。
- step2:对每一对相邻元素做步骤step1,从开始第一对到结尾的最后一对。这步之后,最后的元素应该会是最大的数。
- step3:针对所有的元素重复以上的步骤,除了最后一个。
- step4:持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
二、MATLAB实现
利用MATLAB编写bubble_sort()函数对数据进行排序,函数如下:
%Date:2019-4-15%Writer:绿皮长条瓜%%本程序的目的是利用冒泡排序算法对已知某组数字或字母(根据ACSII码)进行排序function y = bubble_sort(A) %参数A为向量或矩阵n = numel(A); %n为A中数字或字母的个数E = A;A = reshape(A, n, 1); %令A重组为向量B = 1:n;if isletter(A) == zeros(size(A,1),size(A,2)) %待排序数据为数字 flag = 0;elseif isletter(A) == ones(size(A,1),size(A,2)) %待排序数字为字母,根据ASCII码从小到大排序情况 A = int2str(A); %计算字母对应的ASCII码 A = str2num(A); flag = 1;else errordlg('输入参数不符合要求!', 'Warning!')endA = [A,B'];for i = 1:n-1 for j = 1:n-i if A(j) > A(j+1); temp = A(j,:); %核心代码 A(j,:) = A(j+1,:); A(j+1,:) = temp; end endendA = A(:,2);fprintf('经冒泡排序算法排序后的结果如下:') %输出排序结果for i = 1:n if flag == 0 fprintf('%f ', E(A(i))) else fprintf('%c ', E(A(i))) end if mod(i,8) == 0 fprintf('') endendfprintf('')end
三、两个例子
例1:对矩阵A中各元素利用冒泡排序法从小到大进行排序。利用MATLAB调用上述函数排序结果如下:
>> A = [1 5 6 3;15 4 6 8;9 17 13 11];>> bubble_sort(A)经冒泡排序算法排序后的结果如下:1.000000 3.000000 4.000000 5.000000 6.000000 6.000000 8.000000 9.000000 11.000000 13.000000 15.000000 17.000000
例2:对字符串向量B中各字母按照ASCII码利用冒泡排序法从小到大进行排序。利用MATLAB调用上述函数排序结果如下:
>> B = ['Yida', 'Chen'];>> bubble_sort(B)经冒泡排序算法排序后的结果如下:C Y a d e h i n
![97461e28756453a4b1cd806aea29779e.png](https://i-blog.csdnimg.cn/blog_migrate/d7b9378555335bfd87f3fe529bf1a603.jpeg)
欢迎关注本人公众号:Python无忧