700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > python sort 部分元素_Python 简单排序算法-选择 冒泡 插入排序实现

python sort 部分元素_Python 简单排序算法-选择 冒泡 插入排序实现

时间:2022-01-04 08:46:18

相关推荐

python sort 部分元素_Python 简单排序算法-选择 冒泡 插入排序实现

写文章主要是记录自己每天学习的东西,本篇文章主要介绍数据结构中常用的简单的排序算法,虽然这些算法用Python实现起来不是十分的高效,不如c、java之类的运行速度快,应用Python实现主要是为了:1、证明我已经理解了这些算法,2、实现算法可以给自己带来莫名的成就感,这也算是自己的一点积累吧,多少年后,看了这些文章会有些许的自豪吧,好了,言归正传,进入今天的正题:简单排序算法之选择、冒泡、插入排序。

1、选择排序

选择排序是最直观的一种排序思想,但是其是一种不稳定的排序方法。

主要思想:每次从待排序的元素中选出最小或最大的一个元素,放在序列的起始位置,然后在从剩下的序列中继续寻找最小或最大的元素,直接序列剩下一个元素为止。

def select_sort(origin_items, desc=False):"""选择排序origin_items 为待排序序列desc表示是否为降序,默认为升序"""than = '<' if desc else '>'for i in range(len(origin_items) - 1):min_index = ifor j in range(i + 1, len(origin_items)):if eval(str(origin_items[i])+than+str(origin_items[j])):min_index = jorigin_items[i],origin_items[min_index] = origin_items[min_index],origin_items[i]return origin_items

2、冒泡排序

主要思想:从序列的第一个元素开始逐个与它后面的每个元素进行比较,如果满足条件(大于或小于)则交换两个元素,否则继续向后比较,直接结束。

def bubble_sort(origin_items, desc=False):'''冒泡排序'''than = '<' if desc else '>'for i in range(len(origin_items)-1):for j in range(i+1,len(origin_items)):if eval(str(origin_items[i])+than+str(origin_items[j])):#交换两个元素的位置 origin_items[i],origin_items[j] = origin_items[j],origin_items[i]return origin_items

3、插入排序

主要思想:将数据分为有序和无序两部分,通常将第一个元素设置为有序部分,剩下的元素设置为无序部分,每次从无序部分的第一个元素开始与有序部分的元素从后向前逐个比较,找到插入位置将元素插入到有序部分中,直到数据都是有序部分为止。

def insert_sort(origin_items, desc=False):'''插入排序'''than = '>' if desc else '<'for i in range(1,len(origin_items)):for j in range(i,0,-1):if eval(str(origin_items[j]) + than + str(origin_items[j-1])):origin_items[j],origin_items[j-1] = origin_items[j-1],origin_items[j]return origin_items

验证:

a = [10,2,44,2,4,5,7,3,445,24]print('选择排序升序结果为:',select_sort(a))print('选择排序降序结果为:',select_sort(a,True))print('冒泡排序升序结果为:',bubble_sort(a))print('冒泡排序降序结果为:',bubble_sort(a,True))print('插入排序升序结果为:',insert_sort(a))print('插入排序降序结果为:',insert_sort(a,True))

结果为:

如果感兴趣的欢迎关注公众账号:洞察数据挖掘价值。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。