【算法(Java实现)—— 分治算法】教程文章相关的互联网学习教程文章

白话经典算法系列之五 归并排序的实现

归并排序是建立在归并操作上的一种有效的排序算法。该算法是採用分治法(Divide and Conquer)的一个很典型的应用。首先考虑下怎样将将二个有序数列合并。这个很easy,仅仅要从比較二个数列的第一个数,谁小就先取谁,取了后就在相应数列中删除这个数。然后再进行比較,假设有数列为空,那直接将还有一个数列的数据依次取出就可以。//将有序数组a[]和b[]合并到c[]中 void MemeryArray(int a[], int n, int b[], int m, int c[]) {i...

【LeetCode-面试算法经典-Java实现】【057-Insert Interval(插入区间)】【代码】【图】

【057-Insert Interval(插入区间)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if necessary). You may assume that the intervals were initially sorted according to their start times. Example 1: Given intervals [1,3],[6,9], insert and merge [2,5] in as [1,5],[6,9]. Example 2: Given [1,2],[3,5]...

GuavaCache学习笔记一:自定义LRU算法的缓存实现【代码】

前言今天在看GuavaCache缓存相关的源码,这里想到先自己手动实现一个LRU算法。于是乎便想到LinkedHashMap和LinkedList+HashMap, 这里仅仅是作为简单的复习一下。LRULRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。代码实现原理LinkedList + HashMap: LinkedList其实是一个双向链表,我们可以通过get和put来设置最近请求...

【CImg】三角形绘制算法实现【代码】【图】

这周的CV基础练习是简单的图形绘制:比如说矩形、三角形和圆心什么的。会发现其实矩形和圆形的实现思路都很直白,矩形只需要确认两个对角坐标就可以了,圆心只需要确认圆心和半径,接着就是简单的遍历各个像素点判断。但是,三角形的绘制把数学渣的我难住了,然后去查了一下资料,受到了知乎某位大神的启发:如下截图:于是有了以下思路:  一.实心三角形绘制    ①算出三条直线L1、L2、L3的直线方程,即K1、K2、K3(斜率)和...

通过分析 JDK 源代码研究 TreeMap 红黑树算法实现【代码】

TreeMap 的实现就是红黑树数据结构,也就说是一棵自平衡的排序二叉树,这样就可以保证当需要快速检索指定节点。TreeSet 和 TreeMap 的关系为了让大家了解 TreeMap 和 TreeSet 之间的关系,下面先看 TreeSet 类的部分源代码: public class TreeSet<E> extends AbstractSet<E> implements NavigableSet<E>, Cloneable, java.io.Serializable { // 使用 NavigableMap 的 key 来保存 Set 集合的元素private transient NavigableMap<E,...

k近邻算法的Python实现【代码】

k近邻算法的Python实现0. 写在前面这篇小教程适合对Python与NumPy有一定了解的朋友阅读,如果在阅读本文的源代码时感到吃力,请及时参照相关的教程或者文档。1. 算法原理k近邻算法(k Nearest Neighbor)可以简称为kNN。kNN是一个简单直观的算法,也是机器学习从业者入门首选的算法。先看一个简单的应用场景。小例子设有下表,命名为为表1电影名称打斗镜头数量接吻镜头数量电影类型foo13104爱情片foo22100爱情片foo3181爱情片foo41...

python实现十大经典排序算法【代码】【图】

Python实现十大经典排序算法代码最后面会给出完整版,或者可以从我的Githubfork,想看动图的同学可以去这里看看;小结:运行方式,将最后面的代码copy出去,直接python sort.py运行即可;代码中的健壮性没有太多处理,直接使用的同学还要检查检查;对于希尔排序,gap的选择至关重要,需要结合实际情况更改;在我的测试中,由于待排序数组很小,长度仅为10,且最大值为10,因此计数排序是最快的,实际情况中往往不是这样;堆排序没来...

数据加密--详解 RSA加密算法 原理与实现【代码】【图】

RSA算法简介RSA是最流行的非对称加密算法之一。也被称为公钥加密。它是由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)在1977年一起提出的。当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。RSA是非对称的,也就是用来加密的密钥和用来解密的密钥不是同一个。和DES一样的是,RSA也是分组加密算法,不同的是分组大小可以根据密钥的大小而改变。如果...

[数据结构与算法]平衡二叉树实现【代码】【图】

声明:原创作品,转载时请注明文章来自SAP师太技术博客:www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将追究法律责任!原文链接:http://www.cnblogs.com/jiangzhengjun/p/4289792.html 由于程序太长,分成了几部分,后面附上源码。 1/** 2 * 平衡二叉搜索(排序)树3 * 4 * 平衡二叉搜索树双称为AVL树,它也是一棵二叉搜索树,是对二叉搜索树的一种改进,或都是具有下列性质的二叉树:它5 * 的左子树和右...

【LeetCode-面试算法经典-Java实现】【024-Swap Nodes in Pairs(成对交换单链表的结点)】【代码】【图】

【024-Swap Nodes in Pairs(成对交换单链表的结点)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Given a linked list, swap every two adjacent nodes and return its head. For example, Given 1->2->3->4, you should return the list as 2->1->4->3. Your algorithm should use only constant space. You may not modify the values in the list, only nodes itself can be changed. 题目大意  给定一...

de Casteljau算法的matlab实现【图】

一直在写c++程序,不过对于一些作图程序来说,还是MATLAB比较实在。 de Casteljau算法是作贝塞尔曲线的一种高效的算法,其思想就是对[0,1]区间中所有的t,通过n个控制顶点不断递推得到一个顶点:下面是我的代码实现:function deCasteljau(P,Q) %P is 1*n matrix for X %Q is 1*n matrix for Y m=size(P); n=m(2); x=zeros(1,101); y=zeros(1,101); p=zeros(n); q=zeros(n); plot(P,Q,‘r‘); hold on for i=1:np(i,1)=...

【算法导论】简单哈希表的除法实现

哈希表,又名散列表,hashtable。。。云云,看似很高大上,其实不过是直接寻址的延伸而已。直接寻址为何物,看一个数组:a[10],那么取其中一个元素a[1],这就是直接寻址,直接去这个a+1的地址上,就找到了这个数值,时间复杂度为O(1)。而哈希表的目的就是要让查找的时间复杂度尽量往O(1)上靠。 一、哈希表的最简单形式假如有10000个数,比如0~9999,是可能出现的数字的集合,我们现在要将一段时间内,出现的数字,全部保存...

在Python中实现贪婪排名算法的教程【代码】

在较早的一遍文章中,我曾经提到过我已经写了一个属于自己的排序算法,并且认为需要通过一些代码来重新回顾一下这个排序算法。对于我所完成的工作,我核实并且保证微处理器的安全。对非常复杂的CPU进行测试的一个方法就是创建该芯片的另一个模型,其可以用来产生在CPU上运行的伪随机指令流。这所谓的ISG(指令流产生器)能够在很短的时间内创建几千(甚至几百万)个这样的测试,通过某种方式,使其可以巧妙地给出一些对将在CPU上执行...

【LeetCode-面试算法经典-Java实现】【114-Flatten Binary Tree to Linked List(二叉树转单链表)】【代码】【图】

【114-Flatten Binary Tree to Linked List(二叉树转单链表)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Given a binary tree, flatten it to a linked list in-place. For example, Given 1/ 2 5/ \ 3 4 6  The flattened tree should look like: 1 2 3 4 5 6题目大意  给定一棵二叉树,将它转成单链表,使用原地算法。 解题思...

数据结构-排序算法原理和Python实现【代码】【图】

排序算法概览插入排序基本思想是每次讲一个待排序的记录,按其关键字大小插入到前面已拍好的子序列中,直到全部完成。直接插入排序讲元素L(i)插入到有序序列L[1,…,i-1]中,执行以下操作: 1. 查找出L(i)在L[1,…,i-1]中的插入位置k。 2. 将L[k,…,i-1]中所有元素全部后移一位。 3. 将L(i)复制到L(k)def InsertSort(array_a, n):for i in range(1, n):temp = array_a[i]j = i - 1while temp < array_a[j] and j >= 0:array_a[j + 1...