经典排序算法之计数排序

计数排序的核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数。

继续阅读

经典排序算法之堆排序

堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。堆排序可以说是一种利用堆的概念来排序的选择排序。

继续阅读

JavaScript语法高亮库highlight.js下载

JavaScript语法高亮库highlight.js下载

highlight.js是一款基于JavaScript的语法高亮库,目前支持125种编程语言,有63种可供选择的样式,而且能够做到语言自动识别,和目前主流的JS框架都能兼容,可以混合使用。

继续阅读

跟随鼠标移动的鲨鱼

跟随鼠标移动的鲨鱼

跟随鼠标移动的鲸鱼。你会好奇这个效果是怎样做出来的,事实上它只是一些简单的形状相互叠加,而且会跟着鼠标移动。

继续阅读

js立体弹窗效果

js立体弹窗效果

立体弹窗效果。这个作品的作者是 Hakim,他在 CodePen 上面有很多很多的好作品。这个模态窗口配合深度的视觉效果让整个界面特别有立体感。

继续阅读

经典排序算法之快速排序

快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要 Ο(nlogn) 次比较。在最坏状况下则需要 Ο(n2) 次比较,但这种状况并不常见。事实上,快速排序通常明显比其他 Ο(nlogn) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。

继续阅读

经典排序算法之插入排序

插入排序的代码实现虽然没有冒泡排序和选择排序那么简单粗暴,但它的原理应该是最容易理解的了,因为只要打过扑克牌的人都应该能够秒懂。插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。 插入排序和冒泡排序一样,也有一种优化算法,叫做拆半插入。

继续阅读