#include /*快速排序算法-升序 最坏情况:O(n^2),最好情况: O(n.logn) 注意privot中枢纽元是放在right-1的位置 当数组比较小时,可选用插入排序 */ void inser…
分类:算法
算法导论之红黑树
红黑树是特殊的搜索树,除了要满足搜索树外,还得满足color的要求。原则上说树的所有操作只有两种:插入和删除。 基本知识左旋、右旋、最小后继和节点替换不在重复。只针对插入和删除,说其内部原理。 插入: 插入一个元素时,由…
java双向链表实现
双向链表的优点是可以找到前一个节点位置 缺点是每个节点占用的空间大了并且插入和删除需要修改四个指针 代码实现: package com.example.chapter1; /** * Created by toto on…
求最大公约数
求x 和 y 的 最大公约数 a ,(x > y) x = an; y = am; n 和 m 是 正整数; x = t*y + r; an =…
竖式问题
竖式问题: 找出所有形如abc*de(三位数乘以两位数)的算式,使得在完整的竖式中,所有数字 都属于一个特定的数字集合。输入数字集合(相邻数字之间没有空格),输出所有竖式。每 一个…
线性时间排序之计数排序
对于排序,我们熟知的合并排序,快速排序,堆排序,插入排序,冒泡排序,选择排序都是属于比较类的排序,这种排序有一个时间复杂度的下限,即排序所需要的最低时间复杂度是O(nlongn);然而还有一些排序在特定情况下时间复杂度能…
位操作_求二进制中1的个数
以下是求x中二进制1的个数的两种方法,第一种是比较常规的逻辑进行循环移位直至为0结束。第二种效率更高些,不需要循环移位,每次只去掉x中的最后一位。(x&(x-1)可实现去除掉最后一位1。另外如果数中1的个数只有一…
全排列的递归与非递归
全排列是一个十分基础的概念,是一串有可比权值的元素出现的所有排列形式,例如 '张全蛋'、'张蛋全'、'全张蛋'、'全蛋 张'、'蛋全张'、'蛋张全'就是张全蛋的全排列,所以我们发现全排列用来取名字是很不错的,如果对每个汉…
《算法》第四版 学习小伙伴招募~
最近刚入坑 《算法》第四版,但是果然不同于国内的一些简单易懂的编程教程书,读了这本书之后,里面的问题好多都无从下手,并且百度也比较难找到前辈们的解决方案,即使是本专业的内容,还有处…
ES6算法---希尔排序 Shell Sort
原理:插入排序的改进版,克服了插入排序每次只能移动相邻位置的缺陷,希尔排序每次可以移动gap个位置 时间复杂度 最优时间复杂度: O(nlogn) 最坏时间复杂度: O(n^2) 稳定性:不稳定 实现方式 functio…
ES6算法系列
掌握常用的算法是从初级前端向中高级前端发展的必经之路,下面将常见的一些算法使用ES6重写一遍,一共6分为6篇,下面是链接地址: ES6算法—冒泡排序 ES6算法—选择排序 ES6算法—插入排序 ES6算法—快速排序 ES…
Boyer-Moore算法
转自:grep之字符串搜索算法Boyer-Moore由浅入深(比KMP快3-5倍) public class Solution { public String strStr(String haystack, String…