好吧,我在使用这段代码时遇到了麻烦,它是关于在Mathematica中编写Selection Sort算法,但是我的意思是倒置,而不是搜索最小的数字并将其放在列表的第一个位置,我需要搜索最大的一个并将其放在最后一个位置。 我写过这段代码,但由于我是Mathematica的新手,我找不到解决方案。它没有对列表进行排序。非常感谢您的阅读,您的回答将非常有用!
L = {};
n = Input["Input the size of the list (a number): "];
For[i = 1, i <= n, m = Input["Input a number to place in the list:"];
L = Append[L, m]; i++]
SelectSort[L] :=
Module[{n = 1, temp, xi = L, j}, While[n <= Length@L, temp = xi[[n]];
For[j = n, j <= Length@L, j++, If[xi[[j]] < temp, temp = xi[[j]]];];
xi[[n ;;]] = {temp}~Join~
Delete[xi[[n ;;]], First@Position[xi[[n ;;]], temp]];
n++;];
xi]
Print[L]
答案 0 :(得分:0)
这是一个工作版本。在SelectSort[]
函数中,我只需要将函数变量更改为模式变量,即L_
。除此之外,它似乎有效。
(* Function definition *)
SelectSort[L_] := Module[{n = 1, temp, xi = L, j},
While[n <= Length@L,
temp = xi[[n]];
For[j = n, j <= Length@L, j++,
If[xi[[j]] < temp, temp = xi[[j]]];
];
xi[[n ;;]] = {temp}~Join~
Delete[xi[[n ;;]], First@Position[xi[[n ;;]], temp]];
n++;];
xi]
(* Run section *)
L = {};
n = Input["Input the size of the list (a number): "];
For[i = 1, i <= n, m = Input["Input a number to place in the list:"];
L = Append[L, m]; i++]
SelectSort[L]
Print[L]
{3,3,5,7,8}
{8,3,5,7,3}
输出首先是SelectSort[L]
的排序列表,然后是原始输入列表L
。