经典排序的python实现
具体原理我这里就不解释了,可以查看数据结构课本或者百度百科
这里只给出相应的代码(很简洁) 1 __author__ = "WSX"
class sort:
def __init__(self,):
pass def merger(self, left , right): # 合并两个有序列表
i = 0; j = 0 ; result = []
while left and right:
if left[i] <= right[j]:
result.append(left.pop(0))
else:
result.append(right.pop(0))
result += left[:]
result += right[:]
return result def mergeSort(self, L): #归并排序
if len(L) == 1:
return L
mid = len(L) // 2
left = self.mergeSort(L[:mid])
right = self.mergeSort(L[mid:])
return self.merger(left, right) def insert1(self, L): #直接插入排序 俩个for实现
for i in range(1,len(L)):
temp = L[i]
for j in range(i-1,-1,-1):
if L[i] < L[j]:
L[j+1] = L[j]
else:
j += 1
break
L[j] = temp
return L def insert2(self, L): #直接插入排序 for 结合 while
for i in range(1, len(L)):
temp = L[i]
j = i-1
while j >=0 and temp < L[j]:
L[j+1] = L[j]
j -= 1
L[j+1] = temp
return L def bubblk(self, L): #冒泡排序
for i in range(len(L)-1):
for j in range(len(L)-i-1):
if L[j+1] < L[j]:
L[j+1], L[j] = L[j], L[j+1]
return L def quickSort1(self,L): #快速排序
if len(L) <= 1:
return L
else:
return self.quickSort1([i for i in L[1:] if i < L[0]]) + [L[0]] + self.quickSort1([j for j in L[1:] if j > L[0]]) def shellSort(self, L):
pass def selectSort(self, L): #选择排序
for i in range(len(L) -1 ):
index = i
for j in range(i+1, len(L)):
if L[j] < L[index]:
index = j
L[index], L[i] = L[i] ,L[index]
return L def sortHeap(self,L): #堆排序
def heap(L, size, root):
larger = root
left = 2 * root + 1;
right = 2 * root + 2
if left < size and L[left] > L[larger]:
larger = left
if right < size and L[right] > L[larger]:
larger = right
if larger != root:
L[larger], L[root] = L[root], L[larger]
heap(L, size, larger) def bulidHeap(L): # 初始化堆
heapsize = len(L)
for i in range(heapsize // 2, -1, -1):
heap(L, heapsize, i) bulidHeap(L)
for i in range(len(L) - 1, -1, -1):
L[0], L[i] = L[i], L[0]
heap(L, i, 0)
return L a = sort()
print(a.sortHeap([25,3,9,7,55,96]))
经典排序的python实现的更多相关文章
- 十大经典排序算法(Python,Java实现)
参照:https://www.cnblogs.com/wuxinyan/p/8615127.html https://www.cnblogs.com/onepixel/articles/7674659 ...
- 经典排序方法 python
数据的排序是在解决实际问题时经常用到的步骤,也是数据结构的考点之一,下面介绍10种经典的排序方法. 首先,排序方法可以大体分为插入排序.选择排序.交换排序.归并排序和桶排序四大类,其中,插入排序又分为 ...
- 经典排序算法总结与实现 ---python
原文:http://wuchong.me/blog/2014/02/09/algorithm-sort-summary/ 经典排序算法在面试中占有很大的比重,也是基础,为了未雨绸缪,在寒假里整理并用P ...
- 经典排序算法及python实现
今天我们来谈谈几种经典排序算法,然后用python来实现,最后通过数据来比较几个算法时间 选择排序 选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理是每一次从待排序的数据 ...
- 十大经典排序算法(python实现)(原创)
个人最喜欢的排序方法是非比较类的计数排序,简单粗暴.专治花里胡哨!!! 使用场景: 1,空间复杂度 越低越好.n值较大: 堆排序 O(nlog2n) O(1) 2,无空间复杂度要求.n值较大: 桶排序 ...
- 经典排序算法的总结及其Python实现
经典排序算法总结: 结论: 排序算法无绝对优劣之分. 不稳定的排序算法有:选择排序.希尔排序.快速排序.堆排序(口诀:“快速.选择.希尔.堆”).其他排序算法均为稳定的排序算法. 第一趟排序后就能确定 ...
- python 经典排序算法
python 经典排序算法 排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存.常见的内部排序算 ...
- 经典排序算法及总结(python实现)
目录 1.排序的基本概念和分类 排序的稳定性: 内排序和外排序 影响内排序算法性能的三个因素: 根据排序过程中借助的主要操作,可把内排序分为: 按照算法复杂度可分为两类: 2.冒泡排序 BubbleS ...
- python实现十大经典排序算法
Python实现十大经典排序算法 代码最后面会给出完整版,或者可以从我的Githubfork,想看动图的同学可以去这里看看: 小结: 运行方式,将最后面的代码copy出去,直接python sort. ...
随机推荐
- selenium3 下载、配置
s1-s3发展历程 : http://www.cnblogs.com/hhudaqiang/p/6550135.html 官网地址:http://www.seleniumhq.org/文档:http ...
- Action的方法访问
-------------------siwuxie095 Action 的方法访问 Action 的方法访问方式共有三种,如下: 1.通过 method 属性的配置实现 在 action 标签的 m ...
- ubuntu18(笔记本) faster-rcnn实例程序运行
luo@luo-ThinkPad-W540:TensorflowProject$ source activate flappbird (flappbird) luo@luo-ThinkPad-W540 ...
- javascript对变量和函数的声明提前‘hoist’
hoist vt.升起,提起; vi.被举起或抬高; n.起重机,升降机; 升起; <俚>推,托,举; 原文地址:http://www.bootcss.com/article/variab ...
- 28-Truck History(poj1789最小生成树)
http://poj.org/problem?id=1789 Truck History Time Limit: 2000MS Memory Limit: 65536K Total Submiss ...
- SpringBoot中使用AOP实现计算Service执行时间
1.增加POM.XML的依赖架包 <!-- 引入 spring aop 依赖 --><dependency> <groupId>org.springframewor ...
- 心理学轨迹及AI基础理论读后感
今天简单的看了下心理学轨迹及AI基础理论发现世界确实是那3%的人改变的,我等屁民还努力在红尘中争渡,下面简单记录下我刚看完的思路,算做个笔记给自己看.. 模型建立的最终结果可以解读所有的心理学现象,可 ...
- 关于select Count()的使用和性能问题
比如Count(*) FROM E_Table WHERE [date] > '2008-1-1' AND istrue = 0 由于操作的数据比较大(400万以上),所以使用了两个数据库,一个 ...
- query使用
1.row_array():返回查询结果中的第一条数据 include APP_PATH . "../mysql.class.php";$db = new mysql();$sql ...
- es学习-映射管理
2.2.1 增加映射 url:http://192.168.0.108:9200/yingshe/_mapping/user/(前提 索引存在,如索引不存在 请按照上一篇创建索引添加映射) 参数: { ...