首页 > 编程语言 >python排序算法

python排序算法

时间:2024-04-07 22:58:20浏览次数:23  
标签:index map python list range int 算法 input 排序

冒泡排序

n=int(input())         #5
a=list(map(int,input().split(",")))    #7,6,5,4,3
for i in range(0,n-1):      #循环n-1次
    for j in range(0,n-i-1):      #循环n-i次,依次找第二大,第三大的等等
        if a[j]>a[j+1]:
            a[j],a[j+1]=a[j+1],a[j]      #前大于后的交换位置
print(','.join(map(str,a)))     #3,4,5,6,7
print(*a)     #3 4 5 6 

选择排序

n=int(input())
a=list(map(int,input().split()))
for i in range(0,n-1):
    min_value=a[i]
    min_index=i
    for j in range(i,n):
        if a[j]<min_value:
            min_value=a[j]
            min_index=j
    a[i],a[min_index]=a[min_index],a[i]
print(*a)

插入排序

n=int(input())
a=list(map(int,input().split()))
for i in range(1,n):
    value=a[i]
    index=0
    for j in range(i-1,-1,-1):
        if a[j]>value:
            a[j+1]=a[j]
        else:
            index=j+1
            break
    a[index]=value
print(*a)

快速排序

def partition(a,left,right):
    index=left+1
    for i in range(left+1,right+1):
        if a[i]<=a[left]:
            a[index],a[i]=a[i],a[index]
            index+=1
    a[left],a[index-1]=a[index-1],a[left]
    return index-1
def quicksort(a,left,right):
    if left<right:
        mid=partition(a,left,right)
        quicksort(a,left,mid-1)
        quicksort(a,mid+1,right)
n=int(input())
a=list(map(int,input().split()))
quicksort(a,0,n-1)
print(*a)

归并排序

n=int(input())
a=list(map(int,input().split()))
def merge(A,B):
    result=[]
    while len(A)!=0 and len(B)!=0:
        if A[0]<=B[0]:
            result.append(A.pop(0))
        else:
            result.append(B.pop(0))
    result.extend(A)
    result.extend(B)
    return result
def mergesort(A):
    if len(A)<2:
        return A
    mid=len(A)//2
    left=mergesort(A[:mid])
    right=mergesort(A[mid:])
    return merge(left,right)
print(' '.join(map(str,mergesort(a))))

桶排序

from itertools import chain
def Bucket_sort(a,bucketcount):
    minvalue,maxvalue=min(a),max(a)
    bucketsize=(maxvalue-minvalue+1)//bucketcount
    res=[[] for i in range(bucketcount+1)]
    for x in a:
        index=(x-minvalue)//bucketsize
        res[index].append(x)
    for resx in res:
        resx.sort()
    return list(chain(*res))
n=int(input())
a=list(map(int,input().split()))
a=Bucket_sort(a,min(n,10000))
print(*a)

标签:index,map,python,list,range,int,算法,input,排序
From: https://blog.csdn.net/qq_68268403/article/details/137468336

相关文章

  • P1177 【模板】排序
    P1177【模板】排序题目将读入的$N$个数从小到大排序后输出。输入第一行为一个正整数$N$。第二行包含$N$个空格隔开的正整数$a_i$,为你需要进行排序的数。输出将给定的$N$个数从小到大输出,数之间空格隔开,行末换行且无空格。样例输入542451输出12445......
  • python学习--基础知识(字符串扩展)
    八、字符串扩展1、字符串的三种定义方式2、字符串的拼接3、字符串的格式化4、字符串格式化的精确度控制5、字符串格式化的快速方法6、字符串格式化--对表达式进行格式化......
  • python学习--基础知识
    五、转换语句六、标识符......
  • 用python通过tushare能获取股票数据
    当使用Python中的Tushare库时,你可以获取各种股票信息。Tushare是一个强大且易于使用的Python库,它提供了访问金融市场数据的接口。下面是一些你可以使用Tushare获取的股票信息的例子:历史股票数据:通过Tushare,你可以获取股票的历史交易数据,包括开盘价、收盘价、最高价、最低价......
  • 螺旋矩阵(蓝桥杯-Python)
    importosimportsys#请在此输入您的代码n,m=input().split()n=int(n)m=int(m)arr=[[0forjinrange(m)]foriinrange(n)]r,c=input().split()r=int(r)c=int(c)defdo_l():globaln,m,r,c,arr#四个方向#右下左上......
  • 基于斑马算法优化的核极限学习机(KELM)回归预测
    基于斑马算法优化的核极限学习机(KELM)回归预测文章目录基于斑马算法优化的核极限学习机(KELM)回归预测1.KELM理论基础2.回归问题数据处理4.基于斑马算法优化的KELM5.测试结果6.Matlab代码摘要:本文利用斑马算法对核极限学习机(KELM)进行优化,并用于回归预测.1.KEL......
  • 树模型系列——2、决策树生成算法
    1ID3算法ID——IterativeDichotomiser(迭代二分器)从根结点(rootnode)开始,对结点计算所有可能的特征的信息增益,选择信息增益最大的特征作为结点的特征,由该特征的不同取值建立子结点;在对子结点递归地调用以上方法,构建决策树;直到所有特征的信息增益均很小或没有特征可以选择为......
  • python 字符串的操作
    #字符串拼接str1="Hello"str2="World"combined_str=str1+""+str2print(combined_str)#字符串重复str1="Python"repeated_str=str1*3print(repeated_str) #根据字符串索引取值str1="Hello"char=str1[1]#......
  • Python基础篇-Python基础01
    Python基础-day1!!!注意:本系列所写的文章全部是学习笔记,来自于观看视频的笔记记录,防止丢失。观看的视频笔记来自于:哔哩哔哩武沛齐老师的视频:2022Python的web开发(完整版)入门全套教程,零基础入门到项目实战1.文档工具typora2.环境搭建安装Python解释器学习Python语法Python......
  • Offer必备算法22_优先级队列_堆_四道力扣题详解(由易到难)
    目录①力扣1046.最后一块石头的重量解析代码②力扣703.数据流中的第K大元素解析代码③力扣692.前K个高频单词解析代码④力扣295.数据流的中位数解析代码本篇完。①力扣1046.最后一块石头的重量1046.最后一块石头的重量难度简单有一堆石头,每块石头的重......