具体原理我这里就不解释了,可以查看数据结构课本或者百度百科
这里只给出相应的代码(很简洁) 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实现的更多相关文章

  1. 十大经典排序算法(Python,Java实现)

    参照:https://www.cnblogs.com/wuxinyan/p/8615127.html https://www.cnblogs.com/onepixel/articles/7674659 ...

  2. 经典排序方法 python

    数据的排序是在解决实际问题时经常用到的步骤,也是数据结构的考点之一,下面介绍10种经典的排序方法. 首先,排序方法可以大体分为插入排序.选择排序.交换排序.归并排序和桶排序四大类,其中,插入排序又分为 ...

  3. 经典排序算法总结与实现 ---python

    原文:http://wuchong.me/blog/2014/02/09/algorithm-sort-summary/ 经典排序算法在面试中占有很大的比重,也是基础,为了未雨绸缪,在寒假里整理并用P ...

  4. 经典排序算法及python实现

    今天我们来谈谈几种经典排序算法,然后用python来实现,最后通过数据来比较几个算法时间 选择排序 选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理是每一次从待排序的数据 ...

  5. 十大经典排序算法(python实现)(原创)

    个人最喜欢的排序方法是非比较类的计数排序,简单粗暴.专治花里胡哨!!! 使用场景: 1,空间复杂度 越低越好.n值较大: 堆排序 O(nlog2n) O(1) 2,无空间复杂度要求.n值较大: 桶排序 ...

  6. 经典排序算法的总结及其Python实现

    经典排序算法总结: 结论: 排序算法无绝对优劣之分. 不稳定的排序算法有:选择排序.希尔排序.快速排序.堆排序(口诀:“快速.选择.希尔.堆”).其他排序算法均为稳定的排序算法. 第一趟排序后就能确定 ...

  7. python 经典排序算法

    python 经典排序算法 排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存.常见的内部排序算 ...

  8. 经典排序算法及总结(python实现)

    目录 1.排序的基本概念和分类 排序的稳定性: 内排序和外排序 影响内排序算法性能的三个因素: 根据排序过程中借助的主要操作,可把内排序分为: 按照算法复杂度可分为两类: 2.冒泡排序 BubbleS ...

  9. python实现十大经典排序算法

    Python实现十大经典排序算法 代码最后面会给出完整版,或者可以从我的Githubfork,想看动图的同学可以去这里看看: 小结: 运行方式,将最后面的代码copy出去,直接python sort. ...

随机推荐

  1. string.Empty与null与""

    (1)NULLnull 关键字是表示不引用任何对象的空引用的文字值.null 是引用类型变量的默认值.那么也只有引用型的变量可以为NULL,如果int i=null,的话,是不可以的,因为Int是值类 ...

  2. 面向对象的JavaScript-006-Function.prototype.apply()的3种作用

    1. // Function.prototype.apply()的作用 // 1.Using apply to chain constructors Function.prototype.constr ...

  3. python学习之内部执行流程,内部执行流程,编码(一)

    python的执行流程: 加载内存--->词法分析--->语法分析--->编译--->转换字节码---->转换成机器码---->供给CPU调度 python的编码: ...

  4. SQL虚拟数字辅助表

    虚拟数字辅助表是一个整数序列,可以用来完成多种不同的任务,如生成日期跟时间值序列,及分裂值列表.要用查询逻辑产生一个大的整数序列,可以使用交叉连接(cross join). 交叉联接(cross jo ...

  5. Qt的QPixmap半透明

    QPixmap pix1(":/PixmapTest/Resources/Chrysanthemum.jpg"); QPixmap temp(pix1.size()); temp. ...

  6. HDU 4714 Tree2cycle (树形DP)

    题意:给定一棵树,断开一条边或者接上一条边都要花费 1,问你花费最少把这棵树就成一个环. 析:树形DP,想一想,要想把一棵树变成一个环,那么就要把一些枝枝叶叶都换掉,对于一个分叉是大于等于2的我们一定 ...

  7. C#中遇到的方法总结

    1.Select(string filterExpression, string sort)  // 获取按照指定的排序顺序且与筛选条件相匹配的所有 System.Data.DataRow 对象的数组 ...

  8. mysql查询最近7天的数据,没有数据自动补0

    问题描述 查询数据库表中最近7天的记录 select count(*),date(create_time) as date from task where datediff(now(),create_ ...

  9. Java中的http(网络处理)相关的库:HttpClient,HttpCore(转载)

    [背景] 最近和之前,折腾了这个: [教程]模拟登陆百度之Java代码版 然后,对于Java的HttpClient,有了点了解. 现在整理如下: Java本身没有Http相关的库 Java本身,没有内 ...

  10. 利用Trace.WriteLine定位难以重现的问题

    最近的一个项目中,在客户测试环境(UAT)发现了一个bug,却反复尝试都无法在开发环境和QA环境来重现.界面上也没有出现任何异常和错误,只是某个数据的显示错误,其他数据都正常.仔细分析和调试了出错位置 ...