1. #归并排序
  2. def mergeSort(a,L,R) :
  3.     if(L>=R) :
  4.         return
  5.     mid=((L+R)>>1)
  6.     mergeSort(a,L,mid)
  7.     mergeSort(a,mid+1,R)
  8.     p=L
  9.     q=mid+1
  10.     t=[]
  11.     while(p<=mid and q<=R) :
  12.         if a[p]<=a[q] :
  13.             t.append(a[p])
  14.             p+=1
  15.         if a[p]>a[q] :
  16.             t.append(a[q])
  17.             q+=1
  18.     while (p<=mid) :
  19.         t.append(a[p])
  20.         p+=1
  21.     while(q<=R) :
  22.         t.append(a[q])
  23.         q+=1
  24.     cur=0
  25.     for i in range(L,R+1) :
  26.         a[i]=t[cur]
  27.         cur+=1
  28.  
  29. a=[2,3,5,1,5]
  30. mergeSort(a,0,4)
  31. print a
  32.  
  33. #快速排序
  34. import random
  35.  
  36. def Qsort(a) :
  37.     if a==[] :
  38.         return []
  39.     val=random.choice(a)
  40.     return Qsort([for x in a if x<val]) + [for x in a if x==val] +Qsort([for x in a if x>val])
  41.  
  42. a=[1,3,4,6,2,4]
  43. a=Qsort(a)
  44.  
  45. #堆排
  46. def heapAjust(a,pos,sz) :
  47.     if(pos>sz/2) :
  48.         return
  49.     Lchild=pos*2
  50.     Rchild=pos*2+1
  51.     Max=pos
  52.     if(Lchild<=sz and a[Lchild]>a[Max]) :
  53.         Max=Lchild
  54.     if(Rchild<=sz and a[Rchild]>a[Max]) :
  55.         Max=Rchild
  56.     if(Max!=pos) :
  57.         a[Max],a[pos]=a[pos],a[Max]
  58.         heapAjust(a,Max,sz)
  59.     
  60. def buildHeap(a,sz) :
  61.     for i in range(sz/2,0,-1) :
  62.         heapAjust(a,i,sz)
  63. def heapSort(a,sz) :
  64.     buildHeap(a,sz)
  65.     for i in range(sz,0,-1) :
  66.         a[i],a[1]=a[1],a[i]
  67.         heapAjust(a,1,i-1)
  68.  
  69. a=[0,1,2,5,3,4,6]
  70. heapSort(a,6)
  71. print a

python 快排,堆排,归并的更多相关文章

  1. 【js基础】js排序方法——快排+堆排+插排+选择排

    快排 Array.prototype.fastSort = function(){ var arr = this; function sort(left, right, arr){ if( left ...

  2. 排序算法C语言实现——冒泡、快排、堆排对比

    对冒泡.快排.堆排这3个算法做了验证,结果分析如下: 一.结果分析 时间消耗:快排 < 堆排 < 冒泡. 空间消耗:冒泡O(1) = 堆排O(1) < 快排O(logn)~O(n) ...

  3. java 堆排,优先级队列,归并排序

    堆排 堆排是基于二叉树而得来的 例如:对一个数组 可以转为二叉树:       二叉树特性父节点为 i ,  左叶子节点为2i+1:右叶子节点为2i+2; 步骤分解: 1. 先从第一个非叶子节点(即下 ...

  4. 2020-03-25:快排、堆排和归并都是O(nlog n)的算法,为何JDK选择快速排序?

    福哥答案2020-03-26: 口诀如下:冒选插希快 堆归计桶基(冒泡,选择,插入,希尔,快速,堆,归并,计数,桶,基数)冒线 平平 稳常小选平 平平 不常小插线 平平 稳常序希线 四组 不常组快四 ...

  5. P1177 【模板】快速排序(学完归并和堆排之后的二更)

    P1177 [模板]快速排序 不用说,连题目上都标了是一道模板,那今天就来对能用到的许多排序方式进行一个总结: 选择排序 选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理 ...

  6. 数组第K小数问题 及其对于 快排和堆排 的相关优化比较

    题目描述 给定一个整数数组a[0,...,n-1],求数组中第k小数 输入描述 首先输入数组长度n和k,其中1<=n<=5000, 1<=k<=n 然后输出n个整形元素,每个数 ...

  7. 【Algorithm】堆排,C++实现

    对一个数组中的元素按照顺序构建二叉树,就形成了一个(二叉)堆.(二叉树是虚拟的,并不是真的建立二叉树) 表示堆的数组A有两个重要属性:A.heapSize,表示堆里面有多少元素,数组里有多少元素在堆里 ...

  8. 造轮子-Java泛型堆排

    个人博客地址:http://kyle.org.cn/2018/03/13/heapsort/ Java实现泛型堆排算法,用于N个对象中选择最大或者最小的前M个,其中M<=N 类似于Mysql中o ...

  9. STL_算法_Heap算法(堆排)(精)

    C++ Primer 学习中. . . 简单记录下我的学习过程 (代码为主) /***************************************** STL-算法--Heap算法 堆排序 ...

随机推荐

  1. MongoDB管理练习

    一.索引 1.插入10W条数据 文档内容为:{name:zs-i,age:1} 2016-06-07T14:35:57.041+0800 I CONTROL [initandlisten] > ...

  2. http与WebSocket

    利用websocket连接服务器的最大特点就是:持久链接的特点. 共同点是:都是基于TCP协议进行client-server的链接,websocket是HTML5提出的一套补缺HTTP链接中不能持久链 ...

  3. 几个windows使用小技巧

    windows使用技巧 保存网页上图片时,可以按住左键把图片拖到右下角(win+D,双屏幕直接拖动)然后就可以放在桌面啦 放大镜-->Win+加号或者减号(放大或缩小).Win + Esc(退出 ...

  4. 使用libsvm实现文本分类

    @Hcy(黄灿奕) 文本分类,首先它是分类问题,应该对应着分类过程的两个重要的步骤,一个是使用训练数据集训练分类器,另一个就是使用测试数据集来评价分类器的分类精度.然而,作为文本分类,它还具有文本这样 ...

  5. codevs 1043 方格取数 2000年NOIP全国联赛提高组

    时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题目描述 Description 设有N*N的方格图(N<=10,我们将其中的某些方格中填入正整数,而 ...

  6. 课外作业(建立double类型的小数,按照四舍五入保留2位小数)

    举例:

  7. Linux environment variables (环境变量)

    Environment variables are often used to store a list of paths of where to search for executables, li ...

  8. mysql 根据月份查找数据

  9. linux 搜索文本

    find -type f -name '*.php'|xargs grep '127.0.0.1'  搜索所有.php 内容 127.0.0.1 转自:http://www.cnblogs.com/w ...

  10. 解决普遍pc端公共底部永远在下面框架

    <div style="width: 90%;height: 3000px;margin: 0 auto; background: red;"></div> ...