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
   102   103   104   105   106   107   108   109   110   111   112