- 博客(22)
- 收藏
- 关注
原创 八大内部排序 -- 归并排序
归并排序(merge-sort):将两个或两个以上的有序列表组合成一个新的有序表,合并的m,n长度的两个表的复杂度为O(m+n),n个数的序列进行归并共有ceil(logn)次,每一次合并都是n常数级别的,所以总的复杂度为O(nlogn)。同时归并排序是一种稳定的排序。代码如下,采用的是利用递归的方式书写,要对递归的工作方式要用比较深刻的理解哦。。#include using names
2016-08-31 23:49:48 1071
原创 八大内部排序 -- 堆排序
堆排序(heap-sort):把关键字序列看成一颗二叉树,树上的非叶子节点的值均小于(或者大于)其左右子节点的值,所以树根肯定是这个序列的最小值或者最大值。堆排序的核心是树节点的调整,以维护一个最小堆树(或者最大堆),建堆树也是通过堆调整建立的。时间复杂度为:O(nlong) ,不稳定的排序代码如下:#include using namespace std;void print
2016-08-31 18:15:43 478
原创 八大内部排序 -- 选择排序
选择排序:每一次在n-i+1(i=1,2,,,n-1)个记录中选取关键字最小的记录作为有序序列第i个记录。复杂度为O(^2),不稳定的排序代码如下:#include using namespace std;void print(int *a,int n){ for(int i=0;i<n;i++){ cout<<a[i]<<" "; } c
2016-08-30 18:42:58 407
原创 八大内部排序--快速排序
快速排序(qiuck sort):对冒泡排序的一种改进,通过一趟排序把记录分隔成两部分,其中一部分的关键字比另一部分都下,然后递归对这两部分进行快速排序。时间复杂度:最坏O(n^2),平均O(nlogn),属于不稳定的排序。代码如下:#include using namespace std;void print(int *a,int n){ for(int i=0;i<n
2016-08-29 20:09:16 1063
原创 八大内部排序--希尔排序
希尔排序(shell sort):先将整个带排序记录序列分割成若干个子序列分别进行直接插入排序,待整个序列的记录‘基本有序’时,再对全体记录进行一次直接的插入排序。时间复杂度:O(n^1.5) 属于插入排序的一种,是稳定的排序代码如下:/***** shell-sort 希尔排序 稳定的排序 O(n^1.5)******/#include using namespace std
2016-08-29 18:37:15 719
原创 利用hexo搭建个人博客
声明:博客环境是利用GitHubPage+Hexo框架搭建的,所以必须要会点Git的操作,不懂的事先度娘下~或者点击以下链接进行学习 - 金石开的博客 - http://blog.jobbole.com/78960/配置环境1.安装Git和Node环境,自行百度。 2.安装Hexo,在cmd中输入:npm install hexo-cli -g3.新建一个搭建博客的目录,利用GitBash进入
2016-08-27 16:33:51 884
转载 常用正则表达式
很多不太懂正则的朋友,在遇到需要用正则校验数据时,往往是在网上去找很久,结果找来的还是不很符合要求。所以我最近把开发中常用的一些正则表达式整理了一下,在这里分享一下。给自己留个底,也给朋友们做个参考。一、校验数字的表达式1 数字:^[0-9]*$2 n位的数字:^\d{n}$3 至少n位的数字:^\d{n,}$4 m-n位的数字:^\d{m,n}$
2016-08-25 15:45:37 434
原创 window.postMessage实现跨域通信
# window.postMessage1.html5最常用的API之一,实现两个不同域窗口对象之间的数据通信。2.在发送数据窗口执行:otherWindow.postMessage(msg,origin){CSDN:CODE:1847647}
2016-08-25 15:21:27 12725
原创 其他跨域请求方法
除了jsonp这个主流的解决方案外,还有其他四个常用的跨域请求方案适用于不同的场景。# 图片ping图片可以从任何URL中加载,故将img的src设置成其他域的URL,即可实现跨域。还有一个注意的地方是图片的加载是异步的,所以把图片的渲染必须放到回掉函数onload中,具体看以下示例代码: images ping var img = new Image(); img
2016-08-24 14:42:40 559
原创 八大排序之——插入排序
插入排序是最简单的排序方法,他的基本操作是将一个记录插入到已排序好的前子序列中。有n个数的数列,总共要进行n-1次插入排序。例如原数列为[5,1,3,2,4]总共进行n-1次排序分别为:[1,5,3,2,4],[1,3,5,2,4].[1,2,3,5,4],[1,2,3,4,5].复杂度为O(n^2),排序为稳定的排序。基本代码实现如下:#include using namesp
2016-08-23 23:44:06 411
原创 稳定排序和不稳定排序分析
稳定排序和不稳定排序 这几天笔试了好几次了,连续碰到一个关于常见排序算法稳定性判别的问题,往往还是多选,对于我以及和我一样拿不准的同学可不是一个能轻易下结论的题目,当然如果你笔试之前已经记住了数据结构书上哪些是稳定的,哪些不是稳定的,做起来应该可以轻松搞定。本文是针对老是记不住这个或者想真正明白到底为什么是稳定或者不稳定的人准备的。 首先,排序算法的稳定性大
2016-08-23 23:25:12 2713
原创 XHRHttpRequest原生js代码
注:创建xhr对象在IE5+以下的browser是ActiceXObject的示例,其他浏览器是XHRHttpRequest的实例// create xhr object cross browserfunction createXHR() { if(typeof XMLHttpRequest != 'undefined'){ return new XMLHttpRequest();
2016-08-23 16:35:37 7376
原创 深入浅出jsonp(跨域访问机制)
# jsonp初始1.浏览器有安全同源策略(同协议,同域名,同端口),但是ajax请求的资源必须同源,故xhr对象实现不了跨域请求;2.jsonp是利用html中标签的src属性并不被同源策略所限制,可以获取任何服务器上的js脚本运行;以下代码是jsonp的一个原形:本地index.html: jsonp function hundler(date){ co
2016-08-23 15:19:48 745 1
原创 browserify初识
在浏览器环境无法识别下面四个变量module,export,require,global,但是在node环境中有定义。含有这几个变量的js文件需要用类似browserify或者webpack的打包工具进行打包成浏览器可以运行的js代码。这里先简单介绍下browserify的用法:1.全局安装browserify包:cnpm install browserify -g2.需要打包的代
2016-08-22 17:49:26 2821
原创 es6 中的箭头符号
es6中的箭头符号“=>”用于函数的简写,具体例子如下:情况一:var test0 = function(){ return 1;}// 可以写成var test0 = () => 1;var test0 = () => {return 1;}情况二:var test1 = function(x){ return x+1;}// 可以写成
2016-08-22 12:43:20 2256
原创 八大内部排序之——冒泡排序
*** 冒泡排序 最坏复杂度 O(n^2) 稳定排序 ***#include using namespace std;void print(int *a,int n){ for(int i=0;i<n;i++){ cout<<a[i]<<" "; } cout<<endl;}int main(){ int a[100];
2016-08-21 22:02:54 740
原创 判断一个变量是否属于数组类型
var str = ['apple','banane'];var obj = { a: 1};console.log(str.__proto__.constructor === Array ) // trueconsole.log(str.__proto__.constructor === Object ) // falseconsole.log(obj.__proto__.
2016-08-20 20:17:59 1454
原创 分享一张js原型关系图
原图链接总结几点:所有的对象都有"__proto__"属性,该属性对应该对象的原型所有的函数对象都有"prototype"属性,该属性的值会被赋值给该函数创建的对象的"__proto__"属性所有的原型对象都有"constructor"属性,该属性对应创建所有指向该原型的实例的构造函数函数对象和原型对象通过"prototype"和"constructor"属性进行相互关联
2016-08-20 20:12:01 1528
转载 javascript学习路线level分级
【第677期】前端自学路线之js篇 2016-08-20吕大豹 前端早读课 前端早读课前端早读课 微信号 FeZaoDuKe 功能介绍 关注前端,产品设计。 每天5点半推送1篇相关文章到公众号,我们不创造内容,我们只是优秀内容的搬运者。 坚持每天阅读,每天进步一点点 前言八月份第三个周末了,今天我们来看的是前端早读课专栏作者@吕大
2016-08-20 10:45:19 2972 1
转载 Javascript异步编程的4种方法
Javascript异步编程的4种方法作者: 阮一峰日期: 2012年12月21日你可能知道,Javascript语言的执行环境是"单线程"(single thread)。所谓"单线程",就是指一次只能完成一件任务。如果有多个任务,就必须排队,前面一个任务完成,再执行后面一个任务,以此类推。这种模式的好处是实现起来比较简单,执行环境相
2016-08-15 11:37:34 1219
原创 用原生js模拟jquery的淡入淡出fade效果
代码测试:html代码: Document #div{ display: none; width: 100px; height: 100px; background-color: red; } test js代码:function fadeIn(el,time){ if(el.style.opacity =
2016-08-11 20:40:46 5351 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人