Page 107 - 数学建模算法与应用
P. 107
第三章 MATLAB 编程基础
以检查它是否可以除以 m/2 之前的整数,一种更快的方法是简单地检查它是否能
除以 mm 之前的整数。
例 编写冒泡排序算法程序。
解 冒泡排序是一种简单的交换排序,其基本思想是成对比较要排序的记录,
如果顺序相反则交换它们,直到记录中没有反向元素。该算法的基本操作是逐一
进行比较和交换。第一次比较将把最大记录放在 x[n] 的位置。通常,第 i 轮比较
从 x[1] 到 x[n-i+1] 的两个相邻记录,并将这些 n-i+1 记录中最大的记录放置在第
n-i+1 位置。其算法程序如下:
function s = BubbleSort(x)
n = length(x);
for i = 1:n-1
flag = 0;
for j = 1:n-i
if x(j)>x(j+1)
t = x(j+1);
x(j+1) = x(j);
x(j) = t;
flag = 1;
end
end
if (~flag)
break;
end
end
s = x;
此程序使用标志变量标志来指示在每个排序过程中是否发生了交换。如果在
任何排序过程中都没有发生交换,则表示数组已经按顺序排列(正序),算法应
提前终止(循环外)。如果不使用这些标志变量来控制循环,则通常会增加不必
要的计算复杂性。
97

