在之前,我们对堆进行了介绍,也对如何维护最大堆的性质,如何建立最大堆进行了叙述,那么,我们接下来的问题就是,我们如何进行堆排序? 初始时候,堆排序算法利用Build-Max-Heap将输入数组A[1……n]建成最大堆,其…
分类:算法
java-机器人的运动范围
机器人的运动范围
冒泡排序,选择排序,快速排序,插入排序,折半选择排序
#include<iostream> #define MAX 1000 using namespace std; //简单插入排序 void InsertSort(int a[],int len) { for…
基础算法(二分,去重,排列)
《算法图解》 用js来练习书中例子 二分法 查找目标数值在数组中的index值。 原理:每次猜中间值,得出过大还是过小,最多只需log2(n)步,比如100个为7步,1000个为14步。 列表必须为有序,就是数组为从小到…
微信支付》统一下单接口调用
遇到第一次做微信支付的小伙伴可能会遇到很大的问题,第一感觉就是摸不着头脑,完全没思路我先给你说一下微信支付的流程,当你看过微信的官方文档之后,需要的一些关键参数我想你已经了解了,主要是appid,mch_id,key为商…
windows下精确定时总结
windows下精确定时总结 本文对Windows平台下常用的计时函数进行总结,包括精度为秒、毫秒、微秒三种精度的5种方法。分为在标准C/C++下的二种time()及clock(),标准C/C++所以使用的time()及…
字符串包含问题
问题描述 快速判断出短字符串b中的所有字符是否都在长字符串a中?(这里假设字符串中只包含大写字母) 算法思路 首先,将长字符串a映射为一个26位的二进制数,一个位置对应一个字母,如果a中存在某个字母,则该字母所对应的位置…
排序算法3 — 选择排序
原理:在数组中,选出区间[i,n)的最小值,然后与i位置的值进行比较,如果i的值比最小值还小,那么久交换他们的位置。 动画演示: 请查看链接 代码演示:数组长度为100000,数组范围[10,10000],源代码如下: …
横向打印二叉树
第四届蓝桥杯决赛 java高职高专组 第四题 横向打印二叉树 二叉树可以用于排序。其原理很简单:对于一个排序二叉树添加新节点时,先与根节点比较,若小则交…
算法-平衡查找树变换为双向链表
看了网上很多代码,又各种各样的实现方式,有一些不是很容易理解,自己写了一个,贴出来: Code: struct BSTreeNode { int m_nValue; &nb…
LeetCode174. Dungeon Game
LeetCode174. Dungeon Game 问题来源LeetCode174 Dungeon Game 问题描述 The demons had captured the princess (P) and impri…
求两个字符串的最大公共子串
面试的时候遇到求两个字符串的最大公共子串,一开始写的很乱,自己都没整明白,现在回想起来,补在这里。 #include<iostream> using namespace std; void findMaxSu…