0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

python升序和降序排序代码

科技绿洲 来源:网络整理 作者:网络整理 2023-11-21 15:20 次阅读

Python是一种简洁而强大的编程语言,提供了许多实用的函数和方法来排序数据。在本文中,我们将详细讨论Python中的升序和降序排序。我们将深入探讨不同的排序算法、它们的复杂度以及如何在Python中使用它们。

排序是计算机科学中最基本的操作之一,它将一组数据按照某个特定的顺序进行排列。升序排序是将数据按照从小到大的顺序进行排列,而降序排序则是将数据按照从大到小的顺序进行排列。不同的排序算法有不同的性能特征,我们将在本文中介绍最常用的几种算法。

  1. 冒泡排序

冒泡排序是一种比较简单但性能相对较差的排序算法。它通过多次遍历未排序的数据,将较大(或较小)的数值向后(或向前)交换,直到所有的数据都按照顺序排列。冒泡排序的时间复杂度为O(n^2)。

下面是一个使用冒泡排序算法对一个列表进行升序排序的示例代码:

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

arr = [64, 34, 25, 12, 22, 11, 90]
print(bubble_sort(arr))

输出结果为:[11, 12, 22, 25, 34, 64, 90]

  1. 插入排序

插入排序算法是一种简单且高效的排序算法,它通过将未排序的数据逐个插入到已排序的部分中,来实现整体的排序。插入排序的时间复杂度为O(n^2)。

下面是一个使用插入排序算法对一个列表进行升序排序的示例代码:

def insertion_sort(arr):
for i in range(1, len(arr)):
key = arr[i]
j = i-1
while j >=0 and arr[j] > key:
arr[j+1] = arr[j]
j -= 1
arr[j+1] = key
return arr

arr = [64, 34, 25, 12, 22, 11, 90]
print(insertion_sort(arr))

输出结果为:[11, 12, 22, 25, 34, 64, 90]

  1. 快速排序

快速排序算法是一种高效的排序算法,基于分治思想。它选择一个基准元素,将比它小的元素放在它的左侧,比它大的元素放在它的右侧,然后对左右两部分分别进行快速排序。快速排序的平均时间复杂度为O(nlogn)。

下面是一个使用快速排序算法对一个列表进行升序排序的示例代码:

def quick_sort(arr):
if len(arr) <= 1:
return arr
pivot = arr[len(arr)//2]
left = [x for x in arr if x < pivot]
middle = [x for x in arr if x == pivot]
right = [x for x in arr if x > pivot]
return quick_sort(left) + middle + quick_sort(right)

arr = [64, 34, 25, 12, 22, 11, 90]
print(quick_sort(arr))

输出结果为:[11, 12, 22, 25, 34, 64, 90]

  1. 归并排序

归并排序算法也是一种高效的排序算法,基于分治思想。它将待排序的数据不断地分成两部分,分别进行归并排序,然后将两部分有序的子数组合并成一个有序的数组。归并排序的时间复杂度为O(nlogn)。

下面是一个使用归并排序算法对一个列表进行升序排序的示例代码:

def merge_sort(arr):
if len(arr) <= 1:
return arr
mid = len(arr) // 2
left = arr[:mid]
right = arr[mid:]
left = merge_sort(left)
right = merge_sort(right)
return merge(left, right)

def merge(left, right):
result = []
i = 0
j = 0
while i   len(left) and j   len(right):
if left[i]   right[j]:
result.append(left[i])
i += 1
else:
result.append(right[j])
j += 1
while i   len(left):
result.append(left[i])
i += 1
while j   len(right):
result.append(right[j])
j += 1
return result

arr = [64, 34, 25, 12, 22, 11, 90]
print(merge_sort(arr))

输出结果为:[11, 12, 22, 25, 34, 64, 90]

以上算法都是常用的排序算法,但还有其他更多的排序算法,例如堆排序、计数排序和基数排序等。这里只介绍了一些基本的算法,读者可以根据自己的需求选择适合的算法。

除了上述的示例代码,Python还提供了内置的sorted()函数,可以方便地对列表进行升序或降序排序。sorted()函数的参数可以接受一个可迭代对象,并返回一个新的已排序的列表。

下面是一个使用sorted()函数对一个列表进行升序排序的示例代码:

arr = [64, 34, 25, 12, 22, 11, 90]
print(sorted(arr))

输出结果为:[11, 12, 22, 25, 34, 64, 90]

如果要进行降序排序,可以使用sorted()函数的reverse参数设置为True

下面是一个使用sorted()函数对一个列表进行降序排序的示例代码:

arr = [64, 34, 25, 12, 22, 11, 90]
print(sorted(arr, reverse=True))

输出结果为:[90, 64, 34, 25, 22, 12, 11]

总结:

本文详细介绍了Python中的升序和降序排序的多种方法,包括冒泡排序、插入排序、快速排序和归并排序等。我们讨论了每个排序算法的原理和实现,并提供了相应的示例代码。此外,我们还介绍了Python内置的sorted()函数,它可以方便地对列表进行排序。希望本文能给读者带来帮助,理解和掌握Python中的排序算法。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据
    +关注

    关注

    8

    文章

    6512

    浏览量

    87609
  • 算法
    +关注

    关注

    23

    文章

    4456

    浏览量

    90760
  • 函数
    +关注

    关注

    3

    文章

    3882

    浏览量

    61310
  • 代码
    +关注

    关注

    30

    文章

    4556

    浏览量

    66800
  • python
    +关注

    关注

    51

    文章

    4677

    浏览量

    83473
收藏 人收藏

    评论

    相关推荐

    数据结构:单链表的排序

    给定一个单链表的头结点head(该结点有值),长度为n的无序单链表,对其按升序排序后,返回新链表。如当输入链表 {3,1,4,5,2} 时,经升序排列后,原链表变为 {1,2,3,4,5},对应的输出为 {1,2,3,4,5}。
    的头像 发表于 11-30 13:56 440次阅读
    数据结构:单链表的<b class='flag-5'>排序</b>

    排序与索引

    包含编号,姓名,性别,工作日期,职称这5个字段,并存入表px1.dbf中。(2)将已婚的职工按性别的降序排序,当性别相同时按姓名的升序排序,结果仅包含编号,姓名,性别,工作日期,职称,
    发表于 03-10 15:58

    《Visual C# 2008程序设计经典案例设计与实现》---柱状图表的升序降序

    《Visual C# 2008程序设计经典案例设计与实现》---柱状图表的升序降序[hide][/hide]
    发表于 05-13 19:23

    请问查询sql数据库的表格结果都是升序排列的,如何用降序排列?二维数组排列也只能升序

    本帖最后由 一只耳朵怪 于 2018-5-25 10:46 编辑 求教 查询sql数据库 的表格结果都是升序排列的 如何用降序排列 二维数组排列也只能升序
    发表于 05-25 10:36

    二维数组升序降序排列

    二维数组升序降序排列同时可区分相等的数据
    发表于 04-19 14:56

    python排序得出序号各类的方法

    python排序、得出序号各类方法大全 numpy pandas
    发表于 06-13 10:21

    PHP数组排序

    数组排序(6个) sort() - 以升序对数组排序rsort() - 以降序对数组排序 reversal sort)asort() - 根
    发表于 11-04 07:48

    python字典高阶用法

    [key] = 0pythonic的写法dct[key] = dct.get(key, 0)交换key与value普通的写法dic = {'Python': 1, 'Java': 2}new_dic
    发表于 03-29 17:39

    MCS51单片机的排序程序(ASM源代码)

    MCS51单片机的排序程序(ASM源代码) ;内部RAM数据排序程序(升序);入口    :R0(起始地址),N(数据个数);占用资源:ACC,B,R5
    发表于 01-16 11:55 2248次阅读

    C语言教程之对数组进行升序降序排序

    C语言教程之对数组进行升序降序排序,很好的C语言资料,快来学习吧。
    发表于 04-25 16:09 0次下载

    C语言: Leetcode 33搜索旋转排序数组

    假设按照升序排序的数组在预先未知的某个点上进行了旋转。
    的头像 发表于 06-22 08:51 1491次阅读
    C语言: Leetcode 33搜索旋转<b class='flag-5'>排序</b>数组

    Python中的排序

    另外一种排序方法是 sorted ,此方法不是原地排序,以第一个值进行排序,同样也是默认升序排序
    的头像 发表于 09-07 16:25 1955次阅读
    <b class='flag-5'>Python</b>中的<b class='flag-5'>排序</b>

    如何用SCL编写数据排序的程序

    今天来讲下用SCL编写数据排序的程序,排序算法一般分为升序降序,升降指的是把从最小值数据放在第一行,第二小数据放在第二行,依次类推,直到最后一列为数据的最大值。
    的头像 发表于 02-06 14:43 1312次阅读
    如何用SCL编写数据<b class='flag-5'>排序</b>的程序

    SAS:字符型变量的两种排序方式

    在做AE一类的table时,经常会有要求,需要我们先按照例次降序排序,如果例次相同按照SOC拼音首字母排序,例次降序排好理解,但是怎样才能实现对字符型变量按照拼音
    的头像 发表于 05-19 10:41 2414次阅读
    SAS:字符型变量的两种<b class='flag-5'>排序</b>方式

    Python 最好用的8个VS Code扩展

    Preview 这个插件很牛皮,能够实时可视化你的代码结果。 不仅如此,还能为VSCode切换各种主题皮肤。 3.Sort lines 这个扩展很有意思,可以给你按字母大小排序升序降序
    的头像 发表于 10-17 17:15 302次阅读
    <b class='flag-5'>Python</b> 最好用的8个VS Code扩展