[求助]三个数排序

软件和网站开发以及相关技术探讨
eastpeace
帖子: 109
注册时间: 2007-11-17 18:29

[求助]三个数排序

#1

帖子 eastpeace » 2009-12-15 19:43

题目: (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)
delectate
帖子: 18311
注册时间: 2008-01-09 22:41

Re: [求助]三个数排序

#2

帖子 delectate » 2009-12-15 19:45

冒泡,快速排序,等等

才3个数字,不难吧

不过我也差不多忘光了
头像
wzssyqa
帖子: 4010
注册时间: 2008-04-07 17:36
来自: 泰安人在阜新

Re: [求助]三个数排序

#3

帖子 wzssyqa » 2009-12-15 19:45

三个数排序,那些排序的优化方法都派不上用场

得多了才行
头像
HuntXu
帖子: 5776
注册时间: 2007-09-29 3:09

Re: [求助]三个数排序

#4

帖子 HuntXu » 2009-12-15 22:08

代码: 全选

#!/usr/bin/perl -w
use strict;

unless (@ARGV == 3) {
    print "usage: ./sort.pl num1 num2 num3\n";
}
else {
    print join " ", sort @ARGV;
    print "\n";
}
我就会偷懒...
HUNT Unfortunately No Talent...
delectate
帖子: 18311
注册时间: 2008-01-09 22:41

Re: [求助]三个数排序

#5

帖子 delectate » 2009-12-15 22:09

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";
}
我就会偷懒...
:em20 的确
delectate
帖子: 18311
注册时间: 2008-01-09 22:41

Re: [求助]三个数排序

#6

帖子 delectate » 2009-12-15 22:09

3个数字的话,两两对比即可
头像
HuntXu
帖子: 5776
注册时间: 2007-09-29 3:09

Re: [求助]三个数排序

#7

帖子 HuntXu » 2009-12-15 22:11

delectate 写了: :em20 的确
三个数字,写多了对不起智商...
HUNT Unfortunately No Talent...
头像
lilydjwg
论坛版主
帖子: 4248
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: [求助]三个数排序

#8

帖子 lilydjwg » 2009-12-15 23:01

我也来个:

代码: 全选

#!/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: 有虫的哦!
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

Re: [求助]三个数排序

#9

帖子 BigSnake.NET » 2009-12-15 23:06

你把三个数排序, 这本身就是一种排序算法

题目本身就是个悖论
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
头像
xhy
帖子: 3916
注册时间: 2005-12-28 1:16
系统: Ubuntu 12.10 X64
来自: 火星

Re: [求助]三个数排序

#10

帖子 xhy » 2009-12-16 1:57

没有调用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)
目前负债150多万
头像
xhy
帖子: 3916
注册时间: 2005-12-28 1:16
系统: Ubuntu 12.10 X64
来自: 火星

Re: [求助]三个数排序

#11

帖子 xhy » 2009-12-16 2:01

调用sort版

代码: 全选

x = [float(input()) for i in range(3)]
print x.sort() or x
目前负债150多万
头像
anticlockwise
帖子: 2394
注册时间: 2007-03-01 20:46
来自: 湖南长沙

Re: [求助]三个数排序

#12

帖子 anticlockwise » 2009-12-17 6:50

xhy 写了:调用sort版

代码: 全选

x = [float(input()) for i in range(3)]
print x.sort() or x
哈哈,这也是我想写的,英雄所见略同~~
tandkzy
帖子: 512
注册时间: 2006-02-12 19:29

Re: [求助]三个数排序

#13

帖子 tandkzy » 2010-01-14 21:43

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就可以了。
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

Re: [求助]三个数排序

#14

帖子 BigSnake.NET » 2010-01-14 21:59

宇宙飞船操作符 ... 我笑抽了 ..
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
tusooa
帖子: 6548
注册时间: 2008-10-31 22:12
系统: 践兔
联系:

Re: [求助]三个数排序

#15

帖子 tusooa » 2010-01-27 11:33

代码: 全选

print join( " " , sort { $a <=> $b } @ARGV), "\n";

代码: 全选

] ls -ld //
回复