分页: 1 / 2
[求助]三个数排序
发表于 : 2009-12-15 19:43
由 eastpeace
题目: (a)让用户输入三个数值并将分别将它们保存到 3 个不同的变量中。不使用列表或排序算法,自己写代码来对这三个数由小到大排序。
虽然勉强写出来,但总感觉思路太差,写起来很废劲。差点把自绕进去(严重怀疑自己的智商呀,隐约记得当初选修C时有个什么冒泡法、选择法,但都忘了怎么个意思)
尽管题目要求不使用列表或排序算法,但我不介意你使用任何方法。可以实现三数排序功能,尽管写出来,大家一起来开拓思路。
代码: 全选
#!/usr/bin/env python
def sort3(x,y,z):
if x < y:
if y < z:
print x,y,z
else:
if z < x:
print z,x,y
else:
print x,z,y
else:
if z < y:
print z,y,x
else:
if z < x:
print y,z,x
else:
print y,x,z
a = float(input('enter the 1st no. a='))
b = float(input('enter the 2nd no. b='))
c = float(input('enter the 3nd no. c='))
print ('a=%f,b=%f,c=%f') % (a,b,c)
print 'from low to lager squence'
sort3(a,b,c)
Re: [求助]三个数排序
发表于 : 2009-12-15 19:45
由 delectate
冒泡,快速排序,等等
才3个数字,不难吧
不过我也差不多忘光了
Re: [求助]三个数排序
发表于 : 2009-12-15 19:45
由 wzssyqa
三个数排序,那些排序的优化方法都派不上用场
得多了才行
Re: [求助]三个数排序
发表于 : 2009-12-15 22:08
由 HuntXu
代码: 全选
#!/usr/bin/perl -w
use strict;
unless (@ARGV == 3) {
print "usage: ./sort.pl num1 num2 num3\n";
}
else {
print join " ", sort @ARGV;
print "\n";
}
我就会偷懒...
Re: [求助]三个数排序
发表于 : 2009-12-15 22:09
由 delectate
HuntXu 写了:代码: 全选
#!/usr/bin/perl -w
use strict;
unless (@ARGV == 3) {
print "usage: ./sort.pl num1 num2 num3\n";
}
else {
print join " ", sort @ARGV;
print "\n";
}
我就会偷懒...

的确
Re: [求助]三个数排序
发表于 : 2009-12-15 22:09
由 delectate
3个数字的话,两两对比即可
Re: [求助]三个数排序
发表于 : 2009-12-15 22:11
由 HuntXu
delectate 写了:

的确
三个数字,写多了对不起智商...
Re: [求助]三个数排序
发表于 : 2009-12-15 23:01
由 lilydjwg
我也来个:
代码: 全选
#!/usr/bin/env python3
def sort3(a, b, c):
m = min(a, b, c)
M = max(a, b, c)
mid = [x for x in (a, b, c) if x is not m and x is not M][0]
return m, mid, M
PS: 有虫的哦!
Re: [求助]三个数排序
发表于 : 2009-12-15 23:06
由 BigSnake.NET
你把三个数排序, 这本身就是一种排序算法
题目本身就是个悖论
Re: [求助]三个数排序
发表于 : 2009-12-16 1:57
由 xhy
没有调用sort的版本
代码: 全选
def sort3(x):
n, m = min(x), max(x)
print (n, x.remove(n)or min(x), m)
rd = lambda x: float(input('enter the %d-th no. %s=\n' % (x+1, chr(x+ord('a')))))
a = [rd(x) for x in range(3)]
print 'a=%f, b=%f, c=%f' % (a[0], a[1], a[2])
print 'from low to lager squence'
sort3(a)
Re: [求助]三个数排序
发表于 : 2009-12-16 2:01
由 xhy
调用sort版
代码: 全选
x = [float(input()) for i in range(3)]
print x.sort() or x
Re: [求助]三个数排序
发表于 : 2009-12-17 6:50
由 anticlockwise
xhy 写了:调用sort版
代码: 全选
x = [float(input()) for i in range(3)]
print x.sort() or x
哈哈,这也是我想写的,英雄所见略同~~
Re: [求助]三个数排序
发表于 : 2010-01-14 21:43
由 tandkzy
HuntXu 写了:代码: 全选
#!/usr/bin/perl -w
use strict;
unless (@ARGV == 3) {
print "usage: ./sort.pl num1 num2 num3\n";
}
else {
print join " ", sort @ARGV;
print "\n";
}
我就会偷懒...
你的算法是错误的。这是排序数字,不是字符串。
所以应该是sort {$a<=>$b} , @ARGV
直接使用“宇宙飞船”操作符再用sort就可以了。
Re: [求助]三个数排序
发表于 : 2010-01-14 21:59
由 BigSnake.NET
宇宙飞船操作符 ... 我笑抽了 ..
Re: [求助]三个数排序
发表于 : 2010-01-27 11:33
由 tusooa
代码: 全选
print join( " " , sort { $a <=> $b } @ARGV), "\n";