本文目录一览:
- 1、python怎么快速排序与查找
- 2、python 算法种类
- 3、求python中,自定义的复杂数据结构,快速排序的方法
- 4、几种排序算法分析及python实现
- 5、python中如何按不同单位的质量排序
- 6、python算法有哪些
python怎么快速排序与查找
算法体现的是一个思想,就像这里体现的是一个"分而治之"的思想,只要思想不山寨,一些小细节其实不要太在意。学算法嘛,就学个处理问题的思想。不过真正的快排算法不是这样的,真正最优的快排要求随机选择主元加原址排序。我这里两样都没做到。但是我还是认为他是个快排算法,因为他的思想就是快排的思想。
很多时候研究算法去争论代码量的多少真的没有这个必要。
python 算法种类
1. 选择排序算法:选择排序是一种简单直观的排序算法。原理:首先在未排序序列中找到最小或最大元素,存放到排序序列的起始位置;然后,再从剩余未排序元素中继续寻找最大最小元素,然后放到已排序序列的后面,以此类推直到所有元素均排序完毕。
2. 快速排序算法:快速排序的运行速度快于选择排序。原理:设要排序的数组为N,首先任意选取一个数据作为关键数据,然后将所有比它小的数放到它前面,所有比它大的数都放到它后面,这个过程称之为快速排序。
3. 二分查找算法:二分查找的输入是一个有序的列表,如果要查找的元素包含在一个有序列表中,二分查找可以返回其位置。
4. 广度优先搜索算法:属于一种图算法,图由节点和边组成。一个节点可以与多个节点连接,这些节点称为邻居。它可以解决两类问题:第一类是从节点A出发,在没有前往节点B的路径;第二类问题是从节点A出发,前往B节点的哪条路径最短。使用广度优先搜索算法的前提是图的边没有权值,即该算法只用于非加权图中,如果图的边有权值的话就应该使用狄克斯特拉算法来查找最短路径。
5. 贪婪算法:又叫做贪心算法,对于没有快速算法的问题,就只能选择近似算法,贪婪算法寻找局部最优解,并企图以这种方式获得全局最优解,它易于实现、运行速度快,是一种不错的近似算法。
求python中,自定义的复杂数据结构,快速排序的方法
应该是你sorted的使用方式不对吧,它可以对name.key这样的形式进行排序的。
class m:
def __init__(self,name,id):
self.name=name
self.id=id
@property
def key(self):
return self.name
def len(self):
return len(self.name)
def __str__(self):
return '{{\'name\':\'{0}\',\'id\':{1}}}' \
.format(self.name,self.id)
__repr__ = __str__
s = [m('zzzz',1),m('aaa',4)]
l = [('source', s),
]
# 直接属性排序
l.append(('by name', sorted(s, key=lambda x: x.name)))
l.append(('by id', sorted(s, key=lambda x: x.id)))
# 属性函数排序
l.append(('by key', sorted(s, key=lambda x: x.key)))
# 函数排序
l.append(('by len()', sorted(s, key=lambda x: x.len())))
for e in l:
print(e[0])
print(e[1])
这是输出的结果:
source
[{'name':'zzzz','id':1}, {'name':'aaa','id':4}]
by name
[{'name':'aaa','id':4}, {'name':'zzzz','id':1}]
by id
[{'name':'zzzz','id':1}, {'name':'aaa','id':4}]
by key
[{'name':'aaa','id':4}, {'name':'zzzz','id':1}]
by len()
[{'name':'aaa','id':4}, {'name':'zzzz','id':1}]
上述四种用法都是没问题的,至于name[key]的形式同样是OK的。
sorted的参数key,它是一个函数,简单的话可以直接用lambda,复杂点的可以定义成有一个参数的函数,比如:
def sorted_other(item):
if hasattr(item, 'name'):
return item.name
else:
return None
l.append(('by other func', sorted(s, key=sorted_other)))
几种排序算法分析及python实现
排序算法针对不同情况有所不同,不能一概而论。
计算机课程的数据结构有几个章节在讨论排序,这里不能尽述,大致来说快速排序、希尔排序、堆排序、直接选择排序不是稳定的排序算法,而基数排序、冒泡排序、直接插入排序、折半插入排序、归并排序是稳定的排序算法。
直接百度“排序”,查看百度百科里的解释,里面有常用算法和例子代码,可以研究一下。
python中如何按不同单位的质量排序
1.冒泡排序,相邻位置比较大小,将比较大的(或小的)交换位置;
2.选择排序,遍历选择一个最小的数与当前循环的第一个数交换;
3.快速排序:将子段的第一个元素做为中值,先从右向左遍历,如过比中值大high-1,如果比中值小,将这个值放到low那里。
python算法有哪些
算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。
一个算法应该具有以下七个重要的特征:
①有穷性(Finiteness):算法的有穷性是指算法必须能在执行有限个步骤之后终止;
②确切性(Definiteness):算法的每一步骤必须有确切的定义;
③输入项(Input):一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输 入是指算法本身定出了初始条件;
④输出项(Output):一个算法有一个或多个输出,以反映对输入数据加工后的结果。没 有输出的算法是毫无意义的;
⑤可行性(Effectiveness):算法中执行的任何计算步骤都是可以被分解为基本的可执行 的操作步,即每个计算步都可以在有限时间内完成(也称之为有效性);
⑥高效性(High efficiency):执行速度快,占用资源少;
⑦健壮性(Robustness):对数据响应正确。
相关推荐:《Python基础教程》
五种常见的Python算法:
1、选择排序
2、快速排序
3、二分查找
4、广度优先搜索
5、贪婪算法