【python练习】三种排序算法

这篇具有很好参考价值的文章主要介绍了【python练习】三种排序算法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

排序算法
Description

试用选择算法或冒泡算法或快速排序算法对一列数进行升序排列。

如:

9 9 1 4 10 2 1 8 7 4

排列后为:

1 1 2 4 4 7 8 9 9 10


Input
一列若干个整数


Output
排序后的一列整数


Sample Input 1 

9 9 1 4 10 2 1 8 7 4
Sample Output 1

1 1 2 4 4 7 8 9 9 10
Hint

本题主要练习各种排序算法。如果只是为了AC,当然只用内置sorted函数即可。

Source

中学生可以这样学Python,P190-P193例8-21,例8-22,例8-23

冒泡排序

#冒泡排序,每个元素,都跟相邻元素比大小,一直比到最后一个
a=list(map(int,input().split()))
for i in range(len(a)-1):
    #print(a[i])
    for j in range(i+1,len(a)):
        if a[i]>a[j]:
            a[i],a[j]=a[j],a[i]
print(*a)

测试时候有两个节点超时

选择排序

#选择排序,每次扫描剩余数中最大值或最小值与当前位置数交换
a=list(map(int,input().split()))
for i in range(len(a)-1):
    small=min(a[i+1:])
    index=a[i+1:].index(small)+i+1
    if a[i]>a[index]:
        a[i],a[index]=a[index],a[i]
print(*a)
a=list(map(int,input().split()))
for i in range(len(a)-1):
    k=i
    for j in range(i+1,len(a)):
        if a[j]<a[k]:
            k=j
    if i!=k:
        a[i],a[k]=a[k],a[i]
print(a)

测试时候有两个节点超时

快速排序

a=list(map(int,input().split()))

def kuaisu(a,l,r):
    if l>=r:
        return
    i=l
    j=r
    p=a[l]
    while i<j:
        while i<j and a[j]>=p:
            j=j-1
        a[i]=a[j]
        while i<j and a[i]<=p:
            i=i+1
        a[j]=a[i]
        #a[i],a[j]=a[j],a[i]
    a[i]=p
    kuaisu(a,l,i-1)
    kuaisu(a,i+1,r)
kuaisu(a,0,len(a)-1)
print(*a)

上面仿照书本上的快速排序,但没太看懂,根据这个视频【Python小知识】星途文化_python19:快速排序的概念和实现学了一个不太一样的,迷惑

#快速排序,每次选一个数,以此为分界点将元素分成两部分,前面的比该元素小,后面的比该元素大,重复,直到排好
a=list(map(int,input().split()))
def kuaisu(alist):
    if len(alist)<=1:
        return alist
    p=alist[len(alist)//2]
    left=[x for x in alist if x<p]
    mid=[x for x in alist if x==p]
    right=[x for x in alist if x>p]
    return kuaisu(left)+mid+kuaisu(right)
print(*kuaisu(a))

通过测试文章来源地址https://www.toymoban.com/news/detail-714272.html

到了这里,关于【python练习】三种排序算法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python排序算法 ——冒泡排序(附代码)

    相关知识来自《python算法设计与分析》。初级排序算法是指几种较为基础且容易理解的排序算法。初级排序算法包括插入排序、选择排序和冒泡排序3种。虽然它们的效率相对于高级排序算法偏低,但是在了解初级排序算法之后,再去学习相对复杂的高级排序算法会容易许多。

    2024年02月04日
    浏览(25)
  • 排序算法之冒泡排序详解-python版

    冒泡排序:通过比较2个相邻元素之间的大小,交换元素顺序,从而达到排序目的。 从百度百科摘抄下来的冒泡排序原理如下: 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的

    2024年02月17日
    浏览(26)
  • 算法练习Day30 (Leetcode/Python-动态规划)

    62. Unique Paths There is a robot on an  m x n  grid. The robot is initially located at the  top-left corner  (i.e.,  grid[0][0] ). The robot tries to move to the  bottom-right corner  (i.e.,  grid[m - 1][n - 1] ). The robot can only move either down or right at any point in time. Given the two integers  m  and  n , return  the number of possible

    2024年01月20日
    浏览(34)
  • 排序算法:快速排序(三种排序方式、递归和非递归)

    朋友们、伙计们,我们又见面了,本期来给大家解读一下有关排序算法的相关知识点,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! C 语 言 专 栏: C语言:从入门到精通 数据结构专栏: 数据结构 个  人  主  页 : stackY、 目录 前言: 1.快速排

    2024年02月09日
    浏览(26)
  • 数据结构算法练习 插入排序 冒泡排序

    插入排序 代码如下  package main import \\\"fmt\\\" func main() {     a := []int{4, 5, 6, 1, 3, 2}         b := insert(a)     for i := 0; i len(b); i++ {         fmt.Println(b[i])     } } func insert(a []int) []int {     if len(a) = 1 {                   如果数组长度小于等于1 不用排序直接返回          retur

    2024年02月08日
    浏览(36)
  • Python算法——快速排序

    快速排序(Quick Sort)是一种高效的分治排序算法,它选择一个基准元素,将数组分成两个子数组,小于基准的放在左边,大于基准的放在右边,然后递归地排序子数组。快速排序通常比冒泡排序和选择排序更高效,特别适用于大型数据集。本文将详细介绍快速排序的工作原理

    2024年02月05日
    浏览(29)
  • python实现快速排序算法

    1. 快速排序 快速排序(英语:Quicksort),又称划分交换排序(partition-exchange sort),通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行

    2024年02月06日
    浏览(32)
  • 排序算法(python)

    连续的比较和交换相邻元素实现排序。 依次比较相邻的两个数, 每轮之后末尾 的数字是确定的。 时间复杂度为 O ( n 2 ) O(n^2) O ( n 2 ) ,空间复杂度为 O ( 1 ) O(1) O ( 1 ) ,稳定。 从未排序的区间选择最小元素,放在已排序区间的末尾 选择排序是每轮在剩余的元素中,找到最小

    2024年02月07日
    浏览(23)
  • 八大排序算法 (python版本)

    快速排序经常考, 如果只掌握一个排序算法的话,首选快速排序算法 八大排序算法通常指的是以下八种经典排序算法: 使用场景:适用于小规模数据的排序,不推荐用于大规模数据排序。 稳定性:稳定排序算法。 时间复杂度:平均和最坏情况下 O(n^2),最好情况下 O(n)(当

    2024年02月11日
    浏览(26)
  • Python---排序算法

    文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结 Python中的排序算法用于对数据进行排序。排序算法可以使数据按照一定的规则进行排列,以便于数据的查找、统计、比较等操作。在数据分析、机器学习、图形计算等领域,排序算法也是非常重要的工

    2024年02月06日
    浏览(21)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包