首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >列表、字符串和快速排序

列表、字符串和快速排序
EN

Stack Overflow用户
提问于 2014-06-04 03:38:47
回答 1查看 490关注 0票数 1

我正在使用快速排序来对我的列表进行排序。该列表充满了格式如下的数字:

代码语言:javascript
复制
1999.03,0.9
2000.08,0.1
1988.1,0.8

小数点前的数字是年份,小数点后的数字是月份。逗号后面的数字是一个价格。我的快速排序将它们按顺序排列,但在我这样做后,它会降低价格,我不知道为什么。我是python的新手,所以我可能没有用最好的方法来做这件事,但我仍然希望有人能告诉我为什么它不能工作。

代码语言:javascript
复制
def quick_sort(arr):
    if arr == []:
        return []
    else:
        element = arr[len(arr)/2]
        pivot = float(element[0:7])
        lesser = quick_sort([x for x in arr[1:] if float(x[0:7]) < pivot])
        greater = quick_sort([x for x in arr[1:] if float(x[0:7]) >= pivot])
        return lesser + [pivot] + greater

输出如下所示:

代码语言:javascript
复制
1988.1
1999.03
2000.08

我假设这是快速排序的递归调用中的语法,但是我对python的了解还不够多,无法发现它。

EN

回答 1

Stack Overflow用户

发布于 2014-06-04 03:45:02

您可以切割枢轴以将其与其他切割进行比较。在这里,你放下了那个角色。你必须保留整个元素:

代码语言:javascript
复制
element = arr[len(arr) / 2]
pivot = float(element[:7])

因此,您可以与变量pivot进行比较,结果列表是使用element部件构建的。

使用以下命令构建结果:

代码语言:javascript
复制
return lesser + [element] + greater
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24023549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档