文档章节

堆排序

hc321
 hc321
发布于 2018/05/22 10:53
字数 115
阅读 5
收藏 0
#堆调整
def adjust_heap(L,i,size):
    if i>size//2:
        return L
    maxx=i
    if i*2<size and L[maxx] < L[2*i]:
        maxx=2*i
    if i*2+1<size and L[maxx] < L[2*i+1]:
        maxx=2*i+1
    if L[maxx] != L[i]:
        L[i],L[maxx]=L[maxx],L[i]
        adjust_heap(L,maxx,size)
    return L

#堆排序
def heap_sort(L):
    size=len(L)
    for i in range(size//2,-1,-1):
        adjust_heap(L,i,size-1)
    for i in range(size-1,-1,-1):
        L[0], L[i] = L[i], L[0]
        adjust_heap(L,0,i)
L=[12,36,24,85,36,47,27,30,100,53,91]
heap_sort(L)
print(L)

© 著作权归作者所有

共有 人打赏支持
上一篇: 快速排序
下一篇: TextRank
hc321
粉丝 2
博文 80
码字总数 43836
作品 0
海淀
程序员
私信 提问
MySQL:关于排序order by limit值不稳定的说明(1)

水平有限,有过有误请谅解和指正,仅仅作为抛砖引玉。谢谢! 源码版本:5.7.14 本文约定:PQ 就是 Priority Queue 及优先队列其核心是堆排序,文中代表一种算法。 一、问题抛出 数据如下: ...

gaopengtttt
2018/12/07
0
0
JavaScript数据结构与算法(堆)

堆是一种完全二叉树. 堆得使用基本是通过最大堆和最小堆来实现的! 最大堆,最大堆中的最大元素值出现在根结点(堆顶),堆中每个父节点的元素值都大于等于其孩子结点 最小堆,最小堆中的最大元...

fiveoneLei
2018/07/12
0
0
算法——堆排序

我们可以把任意优先队列编程一种排序方法。将所有元素插入一个查找最小元素的优先队列,然后再重复调用删除最小元素的操作来将他们按顺序删除。用无序数组实现的优先队列这么做相当于一次选择...

嘿胖丁
2018/03/05
3
0
程序员必知的8大排序(java实现)

8种排序之间的关系:  1、 直接插入排序   (1)基本思想:   在要排序的一组数中,假设前面(n-1)[n>=2] 个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好...

小帅帅丶
2015/01/09
0
7
浅解前端必须掌握的算法(五):堆排序(下)

前言 虽然前端面试中很少会考到算法类的题目,但是你去比如像腾讯一样的大厂面试的时候就知道了,对基本算法的掌握对于从事计算机科学技术的我们来说,还是必不可少的,每天花上 10 分钟,轻...

程序猿何大叔
2018/07/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

利用神器BTrace 追踪线上 Spring Boot应用运行时信息

概述 生产环境中的服务可能会出现各种问题,但总不能让服务下线来专门排查错误,这时候最好有一些手段来获取程序运行时信息,比如 接口方法参数/返回值、外部调用情况 以及 函数执行时间等信...

CodeSheep
55分钟前
4
0
OSChina 周四乱弹 —— 我想过年请假提前回家两天

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @clouddyy :#每日一歌# 分享王力宏的单曲《爱错》 《爱错》- 王力宏 手机党少年们想听歌,请使劲儿戳(这里) @Caremorele :这几天起床有点...

小小编辑
今天
169
7
Cookie 显示用户上次访问的时间

import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServlet;import javax.serv......

gwl_
今天
1
0
网络编程

第14天 网络编程 今日内容介绍  网络通信协议  UDP通信  TCP通信 今日学习目标  能够辨别UDP和TCP协议特点  能够说出UDP协议下两个常用类名称  能够说出TCP协议下两个常用类名称...

stars永恒
今天
3
0
二进制相关

二进制 众所周知计算机使用的是二进制,数字的二进制是如何表示的呢? 实际就是逢二进一。比如 2 用二进制就是 10。那么根据此可以推算出 5的二进制等于 10*10+1 即为 101。 在计算机中,负数以...

NotFound403
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部