自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

nrsc

Java进阶之路

  • 博客(15)
  • 资源 (1)
  • 收藏
  • 关注

原创 最短距离----迪杰斯塔拉算法----java版

原理(自己理解的,不当之处希望有人可以指出)图如上, 以求v0到v8顶点为例首先求一下v0到各个顶点的距离,得到如下数组我们的目的就是根据上面的数组确定v0到其他各个顶点的最短距离,这样也就获得了v0到v8的最短距离.第一个可以确定最短距离的点     从这个数组我们可以知道v0到达v1的最短距离肯定是1,但是v0到v2的最短距离却不一定是5     为什么这么肯定...

2018-09-30 22:22:30 2255

原创 最小生成树----克鲁斯卡尔算法----java版

 踉踉跄跄写出来了,原理我基本懂了,但是感觉有点讲不出来,这里只贴一下代码:图如上:package cn.nrsc.graph;/** * * @author 孙川 最小生成树-克鲁斯卡尔算法 * */public class Graph_Kruskal { // ------ 边实体---------- class Edge { private int...

2018-09-30 10:54:10 2059 8

原创 最小生成树-----普里姆算法---java版

最小生成树(自己理解的,不当之处希望有人可以指出)简单的说一下最小生成树:假设一个图,它有n个顶点,则只需n-1条边,就可以将其组成一个连通图,在各种组合中,所有n-1条边的权重之和最小的连通图,就是所谓的最小生成树. 算法思想(自己揣摩的,不当之处希望有人可以指出)如上图,我们以v0为起点对整个图求其最小生成树,过程如下:首先既然以v0开始,那么v0肯定就加入到了...

2018-09-29 17:05:30 938 2

原创 二分法查找---java版

比较简单,直接上代码了 package cn.nrsc.algorithm;/** * * @author 孙川 二分查找就是在一堆已经排好序的数组中通过折半规则查找出某个数在数组中的位置 * */public class BinarySearch { public static void main(String[] args) { int[] arr = { -1...

2018-09-28 17:00:00 553

原创 我理解的汉诺塔---java版

汉诺塔(摘自百度百科):        汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。 直接上代码package cn.nrsc.algori...

2018-09-28 16:17:39 534

原创 图的深度遍历和广度遍历

理论部分图的深度遍历和广度遍历都不算很难像极了二叉树的前序遍历和层序遍历,如下面的图,可以用右边的邻接矩阵进行表示,假设以顶点0开始对整幅图进行遍历的话,两种遍历方式的思想如下:1. 深度优先遍历(depthFirstSearch—DFS)由初始顶点开始,沿着一条道一直走,当走到走不动的时候,再回来走一条可以走的通的道,然后再继续往下走,直到走不动,再回来…对应于本图来说就是从0开始往前走,...

2018-09-22 10:36:39 31614 6

原创 基数排序

原理基数排序的思想其实挺有意思,举个栗子来说,有如下数组: 第一趟:我们首先对这个数组按照其个位数进行分组,结果如下: 然后将分组后的数据按照索引的大小取出,得到新的数组如下: 第一趟排序后完成的工作为将数组按照个位数由小到大的顺序进行了排序第二趟:对第一趟的结果按照十位数进行分组,结果如下: 然后将分组后的数组按照索引的大小分别取出,得到新的数组如...

2018-09-13 17:26:39 2359

原创 归并排序 --- 进入现在的公司被面的算法

原理可参考https://www.cnblogs.com/chengxiao/p/6194356.html小记下面的算法是我按照自己的理解写的,调了1个多小时,package com.nrsc.sort;public class MergeSort { public static void main(String[] args) { int[] arr ...

2018-09-10 16:16:55 775

原创 快速排序---(面试碰到过好几次)

原理:   快速排序,说白了就是给基准数据找其正确索引位置的过程.    如下图所示,假设最开始的基准数据为数组第一个元素23,则首先用一个临时变量去存储基准数据,即tmp=23;然后分别从数组的两端扫描数组,设两个指示标志:low指向起始位置,high指向末尾.    首先从后半部分开始,如果扫描到的值大于基准数据就让high减1,如果发现有元素比该基准数据的值小(如上图中18&lt...

2018-09-10 12:20:21 713844 144

原创 堆排序(最大堆)-----选择排序的一种

前记:  堆排序只要理解了原理其实并不难,我在写这个算法时,按照理解一次性就成功了☺一些前置知识:1.首先应该明确的是堆(二叉堆)是一颗完全二叉树;  因为二叉堆是一颗完全二叉树,所以可以用数组来存储堆中的每一个元素,而且可以通过某个节点在数组中的下标(i)很方便的找到其左右孩子节点的下标以及其父亲节点的下标,如下图所示: 由上图还可以推出一个非常有用的性质:假设我们...

2018-09-09 16:54:40 4567

原创 插入排序----希尔排序-----(本文给出了另一种直接插入排序)

希尔排序原理如下(纯手打):假设有下面一个数组99, 38, 65, 82, 26, 13, 27, 49, 55, 1第一趟排序首先设置一个增量inc,比如说最开始的增量为数组长度的一半即 arr.length/2 = 5,则上面的数组可以分成如下几组(相同颜色的为一组): 将每组中的元素进行比较,小的放在前面,大的放在后面(即进行直接插入排序)则第一趟排序后的数组为 ...

2018-09-08 10:33:00 534

原创 二分法插入排序

原理:同直接插入排序一样,二分法插入排序的原理也是将一个待排序的数,插入到前面已经排好序的数组中,但是相比于直接插入排序来说,二分法插入排序是首先将新插入的数与前面已经排好序的数组中的中间那个数进行比较,如果比中间的数大就再在中间的数之后的数组中进行上诉比较,如果比中间的值小就再在中间的值之前的数组中进行上诉比较,直到找到待插入数的正确位置.其实上面的原理对应两种情况(情况1,情况2),举...

2018-09-06 18:17:43 6586 4

原创 直接插入排序

原理(纯手打)原始数据:5 2 1 4 9 0 第一趟排序:看前两个数字5和2,5>2,则5与2进行位置对调 此时前两个数字是有序的了 排序结果:2 5 1 4 9 0第二趟排序: 用第3个数字1与前两个数字2,5进行比较, 先与5进行比较,发现5比1大,则5向后移一个位置 再与2进行比较,发现2比1大,则2向后移一个位置 将第三个数字放到原来...

2018-09-02 22:37:30 435

原创 选择排序

排序思想如下(摘自https://www.cnblogs.com/shen-hua/p/5424059.html):第一趟排序: 原始数据:5 2 8 4 9 1 最小数据1,把1放在首位,也就是1和5互换位置, 排序结果:1 2 8 4 9 5第二趟排序: 第1以外的数据{2 8 4 9 5}进行比较,2最小, 排序结果:1 2 8 4 9...

2018-09-02 13:49:33 525 1

原创 冒泡排序

闲来无事,整理一下排序算法冒泡排序下面的例子摘自https://www.cnblogs.com/shen-hua/p/5422676.html举例说明:要排序数组:int[] arr={6,3,8,2,9,1}; 第一趟排序:     第一次排序:6和3比较,6大于3,交换位置: 3 6 8 2 9 1     第二次排序:6和8比较,6小于8,不交换位置: 3 ...

2018-09-02 13:13:12 573

免费上网软件(教育机构)

此软件可在教育机构,比如大学,研究生院免费获取IPV6地址,从而实现免费上网

2014-08-05

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除