医学学不学matlab,用 MATLAB 学习基本算法

第二个是 Selection Sort

我按照 Selection Sort  编写的代码如下

--------------------------------------------------------------------------------------------------------------------------------

% Selection Sort 算法的基本思路是搜索整个数组,找到最小的那个数,并将其移到数组的最前面

% 然后找第二小的那个数,然后将其移到数组的第二位

% 循环上面的操作,直到完成整个数组的比较和排序

% 可以从第一个数开始,将其和第二个数比较,如果第二个数比第一个数小,则将当前操作数换为第二个数,然后将第二个数和后面的数比较

% 当和整个数组的数都比较完成后,当前操作数就是最小的那个数,将其和第一个数相交换

% 第二小的数可以从第二个数开始,其余操作一致。

arrayNum = randi(100, 1, 20);

lenNum = length(arrayNum);

disp('Before sorting:');

disp(arrayNum);

for i = 1:lenNum

currNumIndex = i;

for j = 1:(lenNum-i)

nextNumIndex = i+j;

currNumIndexSwitch = compareNum(arrayNum(currNumIndex), arrayNum(nextNumIndex));

if currNumIndexSwitch == 1    % 如果返回值为1,则提示当前数比其后面的数大,因此将当前数改为后面的这个更小的数,直到比较完整个数组,得到第i小的数

currNumIndex = nextNumIndex;

end

end

tempNum = arrayNum(i);

arrayNum(i) = arrayNum(currNumIndex);    % 将筛选比较后发现的第i小数排到第i位。

arrayNum(currNumIndex) = tempNum;

disp(arrayNum);

end

disp('After sorting:');

disp(arrayNum);

function currLessNumIndexSwitch = compareNum(num1, num2)   % 如果两数比较大小后需要交换,则返回1,否则返回0

if num1 <= num2

currLessNumIndexSwitch = 0;

else

currLessNumIndexSwitch = 1;

end

end

------------------------------------------------------------------------------------------------------------------------------

Before sorting:

52    37    74    53    81    82    19    13    83    64     2    90    52    55    61    77    86    39     9    74

2    37    74    53    81    82    19    13    83    64    52    90    52    55    61    77    86    39     9    74

2     9    74    53    81    82    19    13    83    64    52    90    52    55    61    77    86    39    37    74

2     9    13    53    81    82    19    74    83    64    52    90    52    55    61    77    86    39    37    74

2     9    13    19    81    82    53    74    83    64    52    90    52    55    61    77    86    39    37    74

2     9    13    19    37    82    53    74    83    64    52    90    52    55    61    77    86    39    81    74

2     9    13    19    37    39    53    74    83    64    52    90    52    55    61    77    86    82    81    74

2     9    13    19    37    39    52    74    83    64    53    90    52    55    61    77    86    82    81    74

2     9    13    19    37    39    52    52    83    64    53    90    74    55    61    77    86    82    81    74

2     9    13    19    37    39    52    52    53    64    83    90    74    55    61    77    86    82    81    74

2     9    13    19    37    39    52    52    53    55    83    90    74    64    61    77    86    82    81    74

2     9    13    19    37    39    52    52    53    55    61    90    74    64    83    77    86    82    81    74

2     9    13    19    37    39    52    52    53    55    61    64    74    90    83    77    86    82    81    74

2     9    13    19    37    39    52    52    53    55    61    64    74    90    83    77    86    82    81    74

2     9    13    19    37    39    52    52    53    55    61    64    74    74    83    77    86    82    81    90

2     9    13    19    37    39    52    52    53    55    61    64    74    74    77    83    86    82    81    90

2     9    13    19    37    39    52    52    53    55    61    64    74    74    77    81    86    82    83    90

2     9    13    19    37    39    52    52    53    55    61    64    74    74    77    81    82    86    83    90

2     9    13    19    37    39    52    52    53    55    61    64    74    74    77    81    82    83    86    90

2     9    13    19    37    39    52    52    53    55    61    64    74    74    77    81    82    83    86    90

2     9    13    19    37    39    52    52    53    55    61    64    74    74    77    81    82    83    86    90

After sorting:

2     9    13    19    37    39    52    52    53    55    61    64    74    74    77    81    82    83    86    90

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值