美文网首页
算法----排序问题(python代码)

算法----排序问题(python代码)

作者: 硬派 | 来源:发表于2018-08-21 15:01 被阅读0次

程序来源于:B站

课程:【Python】这可能是你见过的最简洁最没有废话的Python教程

网址:https://www.bilibili.com/video/av5236569/?p=15


1.插入排序

#插入排序,取数组中的某一个数,比较当前数与数组中的数值,如果找到了比他小的数,插入,循环至不可再循环

def insert_sort(origin_list):

        sorted_list=[]

        for i in range(0,len(origin_list)):

            if len(sorted_list)==0:

                sorted_list.append(origin_list[i])

                continue

                for j in range(len(sorted_list)-1,-1,-1):

                    if sorted_list[j]<=origin_list[i]:

                        sorted_list.insert(j+1,origin_list[i])

                        break

                    if j==0:

                        sorted_list.insert(0,origin_list[i])

            origin_list[:]=sorted_list[:]

origin_list=[5,3,1,7,9,8]

insert_sort(origin_list)

print(origin_list)


2.冒泡排序

#冒泡排序,将相邻两个数排序,不断迭代得到结果

def bubble_sort(origin_list):

    for iin range(len(origin_list),0,-1):

        for jin range(0,i-1):

            if origin_list[j]>origin_list[j+1]:

                origin_list[j],origin_list[j+1]=origin_list[j+1],origin_list[j]

origin_list=[5,3,1,7,9,8]

bubble_sort(origin_list)

print(origin_list)


3.快速排序

#快速排序,设定一个中位数,小于该数的数值放在前面,大于该数的数值放在后面,不断迭代,得到结果

def quick_sort(origin_list,start,end):

    if start>=end:

        return

    left=start

    right=end

    flag_index=left

    while left<right:

        while right>left:

            if origin_list[right]< origin_list[flag_index]:

                origin_list[right],origin_list[flag_index]=origin_list[flag_index],origin_list[right]

                flag_index=right

                break

            right-=1

        while right>left:

            if origin_list[left]>origin_list[flag_index]:

                origin_list[left],origin_list[flag_index]=origin_list[flag_index],origin_list[left]

                flag_index=left

                break

            left+=1

    quick_sort(origin_list,start,flag_index)

    quick_sort(origin_list,flag_index+1,end)

origin_list=[5,3,1,7,9,8]

quick_sort(origin_list,0,len(origin_list)-1)

print(origin_list)


4.归并排序

#归并排序,采用的是分治的理念,分而治之,也就是说先把序列均分,组内排序,再与另一组归并,得到结果

def merge_sort(origin_list,start,end):

    if end<=start:

        return

    mid=int((start+end)/2)

    merge_sort(origin_list,start,mid)

    merge_sort(origin_list,mid+1,end)

    left_head=start

    right_head=mid+1

    temp_list=[]

    while left_head<=midand right_head<=end:

        if origin_list[left_head]< origin_list[right_head]:

            temp_list.append(origin_list[left_head])

            left_head+=1

        if origin_list[left_head]>=origin_list[right_head]:

            temp_list.append(origin_list[right_head])

            right_head+=1

    if left_head<=mid:

        temp_list+=origin_list[left_head:mid+1]

    if right_head<=end:

        temp_list+=origin_list[right_head:end+1]

    for i in range(0,len(temp_list)):

        origin_list[i+start]=temp_list[i]

origin_list=[5,3,1,7,9,8]

merge_sort(origin_list,0,len(origin_list)-1)

print(origin_list)


相关文章

  • 算法----排序问题(python代码)

    程序来源于:B站 课程:【Python】这可能是你见过的最简洁最没有废话的Python教程 网址:https://...

  • 排序算法最强总结及其代码实现(Python/Java)

    前言 本文总结了常用的全部排序算法,内容包括: 排序算法的定义和思路 排序算法的代码实现:Python和Java,...

  • Python排序算法有哪几种?

    python排序算法有哪些?python中常见的排序算法有:插入排序、选择排序、冒泡排序、快速排序、归并排序、希尔...

  • 排序算法详细代码实现

    算法分类 算法时间复杂度 选择排序 插入排序 C++实现 Python实现 冒泡排序 Python实现 归并排序 ...

  • 基础算法之快速排序

    最近在学习算法,先放上快速排序的python代码,等有时间了再来详细说明。 快速排序

  • Python编程学习如何实现排序算法

    Python如何实现排序算法?怎么学好Python编程?排序算法可以说是程序员必备的一项基本功,解决实际问题中会经...

  • 关于JavaScript-2:基本排序算法

    基本排序算法 1.冒泡排序 示例代码: 2.插入法排序 示例代码: 3.选择排序 示例代码: 以上三种排序算法个人...

  • 算法-选择排序

    算 法:选择排序算法时间复杂度: 选择排序算法概述 选择排序伪代码 选择排序实现 选择排序算法概述 排序算法有许...

  • 排序算法

    常见排序算法 本文涉及的算法有:冒泡排序选择排序计数排序 冒泡排序 伪代码 流程图 选择排序 伪代码 流程图 计数...

  • 全面介绍9种常用的排序算法

    本篇给大家介绍几种软件工程中常用的排序算法 所有排序算法的核心的代码都在《常用排序算法核心代码》[https://...

网友评论

      本文标题:算法----排序问题(python代码)

      本文链接:https://www.haomeiwen.com/subject/jixjiftx.html