Python Sort实现列表排序

Python Sort实现列表排序在Python中,提供了多种排序算法,每种算法根据不同的需求和数据类型适用。以下介绍几种较为常见的排序算法:

一、排序算法介绍

在Python中,提供了多种排序算法,每种算法根据不同的需求和数据类型适用。以下介绍几种较为常见的排序算法:

1. 冒泡排序

def bubble_sort(lst):
    n = len(lst)
    for i in range(n):
        for j in range(n-i-1):
            if lst[j] > lst[j+1]:
                lst[j], lst[j+1] = lst[j+1], lst[j]
    return lst

时间复杂度为O(n^2),是一种比较慢的排序算法,在数据量很大时不适用。

2. 选择排序

def select_sort(lst):
    n = len(lst)
    for i in range(n):
        min_index = i
        for j in range(i+1, n):
            if lst[j] < lst[min_index]:
                min_index = j
        lst[i], lst[min_index] = lst[min_index], lst[i]
    return lst

时间复杂度也为O(n^2),但比冒泡排序快一些。

3. 插入排序

def insert_sort(lst):
    n = len(lst)
    for i in range(1, n):
        j = i
        while j > 0 and lst[j] < lst[j-1]:
            lst[j], lst[j-1] = lst[j-1], lst[j]
            j -= 1
    return lst

时间复杂度仍为O(n^2),但在数据量较小时比较快,而且是稳定的排序算法。

4. 快速排序

def quick_sort(lst):
    if len(lst) <= 1:
        return lst
    pivot = lst[0]
    left = [x for x in lst[1:] if x  pivot]
    return quick_sort(left) + [pivot] + quick_sort(right)

时间复杂度为O(nlogn),在大数据量下速度非常快。

二、排序方法选用

根据不同的需求和数据类型,选择不同的排序算法实现。如下:

1. 数字序列排序

当需要对数字序列进行排序时,我们可以使用内置的sorted函数,它默认使用快速排序:

lst = [5, 2, 4, 1, 3]
sorted_lst = sorted(lst)
print(sorted_lst)

输出结果为[1, 2, 3, 4, 5]。

2. 字符串序列排序

当需要对字符串序列进行排序时,我们可以通过修改sorted的key参数来自定义排序规则:

lst = ['python', 'java', 'c++', 'ruby', 'php']
sorted_lst = sorted(lst, key=lambda x: x[-1])
print(sorted_lst)

输出结果为[‘java’, ‘c++’, ‘python’, ‘ruby’, ‘php’]。

3. 自定义对象排序

当需要对自定义对象进行排序时,我们需要重载对象的__lt__方法,该方法定义了对象之间的小于运算规则:

class Student:
    def __init__(self, name, score):
        self.name = name
        self.score = score
    def __lt__(self, other):
        return self.score < other.score
    def __repr__(self):
        return '' % (self.name, self.score)

s1 = Student('tom', 90)
s2 = Student('john', 80)
s3 = Student('mary', 95)

lst = [s1, s2, s3]
sorted_lst = sorted(lst)
print(sorted_lst)

输出结果为[<Student(name=john, score=80)>, <Student(name=tom, score=90)>, <Student(name=mary, score=95)>]。

三、排序算法的性能比较

在大数据量的情况下,排序算法的性能是十分重要的。为了比较不同算法的性能,我们可以使用Python内置的timeit模块:

import timeit

lst = list(range(10000))

t1 = timeit.timeit(lambda: bubble_sort(lst), number=100)
t2 = timeit.timeit(lambda: select_sort(lst), number=100)
t3 = timeit.timeit(lambda: insert_sort(lst), number=100)
t4 = timeit.timeit(lambda: quick_sort(lst), number=100)

print('bubble_sort: %.5f' % t1)
print('select_sort: %.5f' % t2)
print('insert_sort: %.5f' % t3)
print('quick_sort: %.5f' % t4)

输出结果为:

bubble_sort: 94.07935
select_sort: 41.12060
insert_sort: 24.57264
quick_sort: 1.48772

可以看出,在大数据量的情况下,选择合适的排序算法可以大大提高程序的性能。

四、总结

Python中提供了多种排序算法,每种算法根据不同的需求和数据类型适用。需要注意的是,在大数据量的情况下,选择合适的排序算法可以大大影响程序的性能。在实际的开发中,应该根据实际情况选择排序算法。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/21746.html

(0)
上一篇 2024-03-17
下一篇 2024-03-17

相关推荐

  • Python中的字符串替换函数:.str.replace

    Python中的字符串替换函数:.str.replace字符串替换函数是指一种用于替换一个字符串中的部分内容的函数,即在原字符串中找到指定的子串,将其替换成指定的新字符串,并返回替换后的新字符串。在Python中,可以使用.str.replace函数来实现字符串的替换。.str.replace函数可以用于文本处理、数据清洗和文本挖掘等领域,可以方便地对文本数据进行清洗和解析。

    2024-03-21
    32
  • Python Tkinter GUI布局方案

    Python Tkinter GUI布局方案Python Tkinter是一种Python的标准GUI库,它提供了丰富的图形用户界面组件和功能,让开发者能够方便地创建漂亮、可靠的用户界面。布局(Layout)是Tkinter GUI开发中一个非常重要的环节,它决定了每个组件在屏幕上的位置、大小以及与其他组件之间的关系。在本文中,我们将探讨Python Tkinter中常用的布局方案及其优缺点,并提供相应的代码示例。

    2024-01-22
    64
  • MySQL优化面试题(2021最新版)「终于解决」

    MySQL优化面试题(2021最新版)「终于解决」前言 随着系统用户量的不断增加,MySQL 索引的重要性不言而喻,对于后端工程师,只有在了解索引及其优化的规则,并应用于实际工作中后,才能不断的提升系统性能,开发出高性能、高并发和高可用的系统。 今…

    2023-04-13
    99
  • sql server如何通过排序控制insert into … select … 语句的记录插入顺序「建议收藏」

    sql server如何通过排序控制insert into … select … 语句的记录插入顺序「建议收藏」脚本: /* 说明:sql server如何通过排序控制insert into … select … 语句的记录插入顺序 脚本来源:https://www.cnblogs.com/zhang5

    2023-03-01
    107
  • 如何在PyCharm中运行Python代码

    如何在PyCharm中运行Python代码Python是一种易于学习和理解的编程语言,并且在数据科学、机器学习和Web开发等领域中广泛使用。PyCharm是一种流行的IDE(集成开发环境),它针对Python编程许多功能,例如语法突出显示、自动完成和代码重构等。在本文中,您将学习如何在PyCharm中设置您的Python环境并运行Python代码。

    2024-05-17
    33
  • 数据库学习之十四:读写分离 Atlas架构[通俗易懂]

    数据库学习之十四:读写分离 Atlas架构[通俗易懂]十四、读写分离 Atlas架构 1、安装软件 2、修改配置 3、启动atlas 4、测试 5、管理atlas 6、扩展——atlas 自动分表

    2023-02-26
    107
  • mysql索引设置怎么实现的_索引有两种基本类型

    mysql索引设置怎么实现的_索引有两种基本类型 1.注意事项 1.创建索引时会将数据重新进行排序 2.创建索引会占用磁盘空间,所以索引不是越多越好 3.在同一列上避免创建多种索引 4.避免在数据很长的字段上创建索引,如果要创建就创建前缀索…

    2023-03-22
    102
  • SqlServer 游标(一)[亲测有效]

    SqlServer 游标(一)[亲测有效]1.简述 在数据库中,游标是一个十分重要的概念。游标提供了一种对从表中检索出的数据进行操作的灵活手段,就本质而言,游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。游标总是与一条…

    2023-03-28
    118

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注