num1 = int(input("ingresa primer número: "));
num2 = int(input("ingresa segundo número: "));
def intercambiar(x, y):
aux = x;
x = y;
y = aux;
return (x, y);
def ordenar2num(x, y):
if x > y:
return intercambiar(x, y);
return (x, y);
numeros = ordenar2num(num1, num2)
print(numeros);
我希望我有所帮助。运气!
更新
在查看问题的细化后:
请注意,对两个数字进行排序是微不足道的,但是当我们增加要排序的数字数量时,复杂度会飙升:
num1 = int(input("ingresa primer número: "));
num2 = int(input("ingresa segundo número: "));
num3 = int(input("ingresa tercer numero"));
def ordenar3num(x, y, z):
if x < y:
if x < z:
if (y < z):
return (x, y, z);
return (x, z, y);
return (z, x, y);
if y < z:
if x < z:
return (y, x, z);
return (y, z, x);
return (z, y, x);
numeros = ordenar3num(num1, num2, num3)
print(numeros);
num1 = int(input("ingresa primer número: "));
num2 = int(input("ingresa segundo número: "));
num3 = int(input("ingresa tercer numero: "));
def ordenarMejor(nums):
s = len(nums);
for i in range(s):
for j in range(1, s - i):
if nums[j-1] > nums[j]:
(nums[j-1], nums[j]) = (nums[j], nums[j-1])
return nums;
numeros = ordenarMejor([num1, num2, num3]);
print(numeros);
几件事。
值 3 和 6 已经按照从小到大排序。这不是一个测试您是否正确订购它们的好例子:-)
您的函数
intercambiar(x,y)
不会直接交换您传递给它的参数(这是无法做到的,因为函数x
e内部y
是这些参数的副本,并且它们与调用函数不是直接相同的变量)a
。b
但是您已经正确实现了它,除了与 交换之外x
,y
您还返回了新的交换伙伴。您需要的是在使用 的函数中接收该结果
intercambiar()
,即:要在 python 中交换变量,您不需要编写函数。你甚至不需要像
aux
. 以下将起作用:发生的情况是您通过 value将参数传递给您的函数,而没有检索它们返回的值。
如果您检索函数返回的值,您将看到它正常工作,如以下代码所示
我希望我有所帮助。运气!
更新
在查看问题的细化后:
请注意,对两个数字进行排序是微不足道的,但是当我们增加要排序的数字数量时,复杂度会飙升:
因为每次我们在订单中添加一个新数字时,我们必须在每次比较的情况下考虑这个新元素,也许我们应该考虑一个更好的解决方案。
我们可以开始将输入的一组数字视为一个列表,并处理列表而不是处理每个数字。这样做的好处是我们的解决方案与输入的数字数量无关。
满足不使用python内部函数的限制。如果您认为应该适用任何其他限制,请随时发表评论。
排序算法的研究是计算机科学的一个非常好的分支,我留下一个链接供参考。
我希望我有所帮助。运气!