ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python实现排序算法

2019-07-10 15:04:21  阅读:233  来源: 互联网

标签:inlist Python list lst len 算法 sorted 排序 out


文章目录

1、冒泡排序

代码:

#将输入的数据转换为列表(1,2,3,4 -> [1,2,3,4])
def change_to_list(inlist):
    sorted_list = inlist.split(',')     #按逗号分割成一个列表
    #将列表中的每个元素转换为整型数据
    for i in range(len(sorted_list)):
        sorted_list[i] = int(sorted_list[i])

    return sorted_list


#冒泡排序
def rubble_sort(sorted_list):
    for i in range(len(sorted_list) - 1):
        for j in range(len(sorted_list) - 1 - i):
            if sorted_list[j] > sorted_list[j + 1]:
                sorted_list[j], sorted_list[j + 1] = sorted_list[j + 1], sorted_list[j]

    return sorted_list


inlist = input('please enter the number your want to sort(eg:1,2,3,4): ')
num_list = change_to_list(inlist)       #将接受到的输入数据转化为列表形式
sorted_list = rubble_sort(num_list)     #排序实现

print(sorted_list)

2、简单选择排序

代码:

def change_to_list(instr):
    '''将输入的字符串转换为一个列表(eg: '1,2,3,4' -> [1,2,3,4])'''
    out_list = instr.split(',')
    #将列表中的字符元素转换为整型元素
    for i in range(len(out_list)):
        out_list[i] = int(out_list[i])

    return out_list


def selected_sort(inlist):
    """选择排序的实现"""
    for i in range(len(inlist)):
        minIndex = i
        for j in range(i+1, len(inlist)):
            if inlist[j] < inlist[i]:
                minIndex = j
        if minIndex != i:
            inlist[i],inlist[j] = inlist[j],inlist[i]

    return inlist


inlist = input("please enter the number your want to sort(eg:1,2,3,4): ")
out_list = change_to_list(inlist)       #将输入的字符串转化为列表
sorted_list = selected_sort(out_list)   #将列表实现排序
print(sorted_list)

3、快速排序

原理参考:https://blog.csdn.net/pythondafahao/article/details/80084385
代码实现:

#方法1:
def quick(lst):
    if len(lst) <= 1:
        return lst
    m = lst[len(lst)//2]
    left = [x for x in lst if x<m]
    right = [x for x in lst if x>m]
    mm = [x for x in lst if x==m]
    return quick(left) + mm + quick(right)


#方法2:
def fastSort(lst):
    if len(lst) <= 1:
        return lst
    return fastSort([lt for lt in lst[1:] if lt < lst[0]]) + lst[0:1] + \
           fastSort([rt for rt in lst[1:] if rt >= lst[0]])


if __name__ == '__main__':
    lst = [12,4,9,3,14,15,20,1,5,6,42,2,7,8,36,0,2,4,6]
    print(fastSort(lst))

标签:inlist,Python,list,lst,len,算法,sorted,排序,out
来源: https://blog.csdn.net/weixin_44554475/article/details/87889733

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有