03 2019 档案

摘要:转载自:https://www.cnblogs.com/ciyeer/p/9067098.html有关在静态查找表中对特定关键字进行顺序查找、折半查找或者分块查找,都是在查找表中各关键字被查找概率相同的前提下进行的。例如查找表中有 n 个关键字,表中每个关键... 阅读全文
posted @ 2019-03-30 22:39 如是说 阅读(2229) 评论(0) 推荐(0) 编辑
摘要:题目描述每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个... 阅读全文
posted @ 2019-03-30 21:32 如是说 阅读(245) 评论(0) 推荐(0) 编辑
摘要:题目描述LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张_)…他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“O... 阅读全文
posted @ 2019-03-30 20:19 如是说 阅读(506) 评论(0) 推荐(0) 编辑
摘要:题目描述牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序... 阅读全文
posted @ 2019-03-30 19:54 如是说 阅读(239) 评论(0) 推荐(0) 编辑
摘要:分段基本方法分段就是基于用户视图的内存管理方案。逻辑地址空间是由一组段构成的,每个段都有名称和长度。地址指定了段名称和段内偏移。因此用户通过两个量来指定地址:段名称和段偏移。为了简单,进行对段的编号,是通过段号而不是段名称来引用的,所以逻辑地址由有序对组成:... 阅读全文
posted @ 2019-03-30 17:19 如是说 阅读(825) 评论(0) 推荐(0) 编辑
摘要:题目描述汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZde... 阅读全文
posted @ 2019-03-30 14:16 如是说 阅读(134) 评论(0) 推荐(0) 编辑
摘要:题目描述输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。输出描述:对应每个测试案例,输出两个数,小的先输出。方法一最直观的一个方法就是现在数组中固定一个数字,再依次判断数组中其余... 阅读全文
posted @ 2019-03-30 13:44 如是说 阅读(414) 评论(0) 推荐(0) 编辑
摘要:题目描述小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21... 阅读全文
posted @ 2019-03-29 13:58 如是说 阅读(745) 评论(0) 推荐(1) 编辑
摘要:题目描述一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。方法一最直接的方法就是利用HashMap,将map的键设置成数组中的数字,map的值设置为该键在数组中出现的次数,第一次遍历初始化map,第二次遍历获得两个只... 阅读全文
posted @ 2019-03-28 22:02 如是说 阅读(346) 评论(0) 推荐(0) 编辑
摘要:题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。分析首先我们要知道AVL树性质,不了解的可以看这篇文章:平衡二叉树(AVL)的理解和实现(Java)我们知道平衡二叉树是高度平衡化的二叉搜索树,那么对于任意一个节点,其左右子树的高度差不大于1,如果存在某... 阅读全文
posted @ 2019-03-28 21:51 如是说 阅读(294) 评论(0) 推荐(0) 编辑
摘要:题目描述输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。其实考的就是数据结构,没什么好说的,直接上代码(递归)://节点类public class TreeNode { int val ... 阅读全文
posted @ 2019-03-28 21:45 如是说 阅读(142) 评论(0) 推荐(0) 编辑
摘要:基本概念基本硬件CPU可以直接访问的通用存储只有内存和处理器的内置的寄存器。机器指令可以用内存地址作为参数,而不能用磁盘地址作为参数。所以执行指令以及指令使用的数据,应在这些可执行访问的存储设备上,如果数据不在内存中,那么在CPU使用他们之前应把数据移到内存... 阅读全文
posted @ 2019-03-28 18:00 如是说 阅读(1605) 评论(0) 推荐(0) 编辑
摘要:题目描述统计一个数字在排序数组中出现的次数。方法一最简单的方法就是遍历整个数组。没什么好说的,很low. /** * 方法一 * @param array * @param k * @return */ public int GetNumberOf... 阅读全文
posted @ 2019-03-28 14:10 如是说 阅读(1601) 评论(0) 推荐(1) 编辑
摘要:题目描述输入两个链表,找出它们的第一个公共结点。节点类:public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}分析首先要理解... 阅读全文
posted @ 2019-03-27 22:28 如是说 阅读(8565) 评论(0) 推荐(0) 编辑
摘要:题目描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007输入描述:题目保证输入的数组中没有的相同的数字数... 阅读全文
posted @ 2019-03-27 22:12 如是说 阅读(826) 评论(0) 推荐(0) 编辑
摘要:题目描述在一个字符串(0 map = new HashMap(); for (int i = 0; i < str.length(); i++) { if(!map.containsKey(str.charAt(i))) { map.put(st... 阅读全文
posted @ 2019-03-27 14:30 如是说 阅读(244) 评论(0) 推荐(0) 编辑
摘要:题目描述把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。方法一所谓一个数m是另外一个数n的因子,就是说n能被m整除(n % ... 阅读全文
posted @ 2019-03-26 22:31 如是说 阅读(280) 评论(0) 推荐(0) 编辑
摘要:题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。方法一最直接的一种方法就是类似于之前有道题“字符串的全排列”,先求出数组中... 阅读全文
posted @ 2019-03-26 22:20 如是说 阅读(621) 评论(0) 推荐(0) 编辑
摘要:什么是死锁在正常操作模式下,进程按如下顺序来使用资源:申请:进程请求资源使用:进程对资源进行操作释放:进程释放资源当一组进程中的每一个进程度在等待一个事件,而这事件只能有一组进程的另一个进程引起,那么这组进程就处于死锁状态。死锁的特征我们来看一个例子:互斥锁... 阅读全文
posted @ 2019-03-26 18:03 如是说 阅读(328) 评论(0) 推荐(0) 编辑
摘要:题目描述求出113的整数中1出现的次数,并算出1001300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意... 阅读全文
posted @ 2019-03-26 14:51 如是说 阅读(1472) 评论(0) 推荐(0) 编辑
摘要:题目描述HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢... 阅读全文
posted @ 2019-03-25 22:29 如是说 阅读(188) 评论(0) 推荐(0) 编辑
摘要:题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。方法一基于随机快排思想,基于数组的第k个数字来调整,则使得比第k个数字小的所有数字都在数组的左边,比k大的数字都在数组的右边。这... 阅读全文
posted @ 2019-03-25 22:16 如是说 阅读(278) 评论(0) 推荐(0) 编辑
摘要:在做一道算法时需要使用大顶堆,所以查了一下记录。 使用PriorityQueue实现大顶堆PriorityQueue默认是一个小顶堆,然而可以通过传入自定义的Comparator函数来实现大顶堆。如下代码实现了一个初始大小为11... 阅读全文
posted @ 2019-03-25 20:35 如是说 阅读(5436) 评论(0) 推荐(0) 编辑
摘要:题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。方法一 ---- 基于随机快排如果数组中... 阅读全文
posted @ 2019-03-25 14:16 如是说 阅读(1806) 评论(0) 推荐(0) 编辑
摘要:题目描述输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字... 阅读全文
posted @ 2019-03-24 15:03 如是说 阅读(189) 评论(0) 推荐(0) 编辑
摘要:题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。分析首先注意要求的是一个排序的双向链表,从小到大,嗯,看到这里我就想到了二叉排序树的中序遍历,因为二叉排序树的中序遍历就是从小到大节点进... 阅读全文
posted @ 2019-03-23 22:35 如是说 阅读(181) 评论(0) 推荐(0) 编辑
摘要:题目描述输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)(PS:在复杂链表中的节点,除了有一... 阅读全文
posted @ 2019-03-23 22:21 如是说 阅读(149) 评论(0) 推荐(0) 编辑
摘要:题目描述输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)分析由于路径是从根节点出发到叶子节点的,因此我们... 阅读全文
posted @ 2019-03-23 22:17 如是说 阅读(1435) 评论(0) 推荐(0) 编辑
摘要:1.调度器的概述多任务操作系统分为非抢占式多任务和抢占式多任务。与大多数现代操作系统一样,Linux采用的是抢占式多任务模式。这表示对CPU的占用时间由操作系统决定的,具体为操作系统中的调度器。调度器决定了什么时候停止一个进程以便让其他进程有机会运行,同时挑... 阅读全文
posted @ 2019-03-23 16:44 如是说 阅读(4331) 评论(0) 推荐(0) 编辑
摘要:引言一般来说,我们将实时操作系统区分为软实时系统(soft real-time system)和硬实时系统(hard real-time system)。软实时系统不保证会调度关键实时进程,而只保证这类进程会优先于非关键进程。硬实时系统具有更严格的要求:一个... 阅读全文
posted @ 2019-03-23 15:59 如是说 阅读(1464) 评论(0) 推荐(0) 编辑
摘要:引言之前我们所学习的操作系统进程调度策略的前提条件是单处理器系统下的CPU调度程序。如果系统中存在多个CPU,那么负载分配就成为可能,但是相应的调度问题就会更加复杂。多处理器调度方法对于多处理器,CPU调度的一种方法是让一个处理器(主处理器)处理所有调度决定... 阅读全文
posted @ 2019-03-23 14:59 如是说 阅读(1602) 评论(0) 推荐(0) 编辑
摘要:题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。方法一(递归)后续遍历得到的序列中最后一个元素一定是树的根节点的值。数组中前面的数字可以分为两部分:左子树的值序... 阅读全文
posted @ 2019-03-22 22:29 如是说 阅读(3932) 评论(0) 推荐(0) 编辑
摘要:进程调度基本概念多道程序的目标就是始终允许某个进程运行以最大化CPU利用率,多个进程通时存在于内存中,操作系统通过进程调度程序按特定的调度算法来调度就绪队列中的进程到CPU,从而最大限度的利用CPU。需要进行CPU调度的情况可以分为四种:当一个进程从运行状态... 阅读全文
posted @ 2019-03-22 16:16 如是说 阅读(4065) 评论(0) 推荐(1) 编辑
摘要:题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。分析其实就是二叉树的层序遍历,借用一个队列来一次将根节点,根节点的左子节点,根节点的右子节点添加到队列中,依次先进先出。代码//节点类public class TreeNode { int ... 阅读全文
posted @ 2019-03-22 14:33 如是说 阅读(192) 评论(0) 推荐(0) 编辑
摘要:题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压... 阅读全文
posted @ 2019-03-22 14:15 如是说 阅读(1169) 评论(1) 推荐(0) 编辑
摘要:题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。分析借用一个辅助栈来把每次的最小元素(之前的最小元素和新压入栈的元素两者的较小值)保存起来,这样在弹出最小元素之后,可以获得下一个最小元素。比如现在... 阅读全文
posted @ 2019-03-22 14:10 如是说 阅读(205) 评论(0) 推荐(0) 编辑
摘要:题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,... 阅读全文
posted @ 2019-03-21 22:33 如是说 阅读(1387) 评论(0) 推荐(0) 编辑
摘要:题目描述操作给定的二叉树,将其变换为源二叉树的镜像。输入描述:分析观察图像可知所谓进行就是将所有的左右节点进行交换。代码public class TreeNode { int val = 0; TreeNode left = null; TreeNode r... 阅读全文
posted @ 2019-03-21 22:18 如是说 阅读(139) 评论(0) 推荐(0) 编辑
摘要:题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)分析查找A中是否存在树B结构一样的子树,可以分为两步:第一步,在树A中找到和树B的根节点的值一样的节点R第二步,判断A中以R为根节点的子树是不是包含和树B一样的... 阅读全文
posted @ 2019-03-21 22:13 如是说 阅读(2534) 评论(0) 推荐(2) 编辑
摘要:题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。方法一(递归)合并过程中,首先比较两个链表的首节点哪个小,较小的节点作为合成链表的首节点,之后将指针指向较小节点的后一个节点,再次进行上面逻辑的比较,可以发现... 阅读全文
posted @ 2019-03-21 16:29 如是说 阅读(3778) 评论(1) 推荐(0) 编辑
摘要:题目描述输入一个链表,反转链表后,输出新链表的表头。分析定义current指向当前遍历到的节点,pNext是当前遍历节点的下一个节点,因为需要将当前节点指向上一个节点,为了避免链表在当前节点处断开需要保存下一个节点;pPrev是当前节点的上一个节点,因为我们... 阅读全文
posted @ 2019-03-20 22:41 如是说 阅读(168) 评论(0) 推荐(0) 编辑
摘要:题目描述输入一个链表,输出该链表中倒数第k个结点。方法一假设所给链表的长度为n,那么倒数第k和节点就是从头结点开始第n-k+1个节点,所以需要遍历两次链表,第一次遍历得出链表的长度,第二次表理你获得第n-k+1个节点 public ListNode F... 阅读全文
posted @ 2019-03-20 21:57 如是说 阅读(567) 评论(0) 推荐(0) 编辑
摘要:题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。这里需要注意的是保证奇数和奇数,偶数和偶数之间的相对位置不变,即算法是稳定的。方法... 阅读全文
posted @ 2019-03-20 21:23 如是说 阅读(257) 评论(0) 推荐(0) 编辑
摘要:题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。分析计算机中对于浮点型变量是存在误差的,所以判断base是否为0可以根据在一个足够小的区间内。对付exponent是负数时,将base = ... 阅读全文
posted @ 2019-03-20 21:21 如是说 阅读(140) 评论(0) 推荐(0) 编辑
摘要:题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。在计算机中是使用二制数中的最高位表示来正负。 二进制的储存中都是用的补码.正数的原码、反码和补码相同,负数的原码是最高位为1,反码最高位不变,其余各位取反,补码为其反码+1public ... 阅读全文
posted @ 2019-03-20 21:12 如是说 阅读(188) 评论(0) 推荐(0) 编辑
摘要:我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?分析这道题依旧考的斐波那契序列。2n的大矩形,和n个21的小矩形,有下列几种情况:当target <= 0,大矩形<= 20,直接re... 阅读全文
posted @ 2019-03-20 21:04 如是说 阅读(167) 评论(0) 推荐(0) 编辑
摘要:多线程简介 线程是CPU使用的基本单元,包括线程ID,程序计数器、寄存器组、各自的堆栈等,在相同线程组中,所有线程共享进程代码段,数据段和其他系统资源。 传统的的单线程模式是每一个进程只能单个控制线程,但是随着计算机硬件的提升和多(多处理器)的普及,传统的单线程模式已经不适用于现在,所以希望一个进程 阅读全文
posted @ 2019-03-20 17:34 如是说 阅读(1522) 评论(0) 推荐(1) 编辑
摘要:僵尸进程当一个进程终止时,操作系统会释放其资源,不过它位于进程表中的条目还是在的,直到它的父进程调用wait();这是因为进程表中包含了进程的退出状态。当进程已经终止,但是其父进尚未调用wait(),这样的进程叫做僵尸进程(zombie prpcess)。所... 阅读全文
posted @ 2019-03-19 18:15 如是说 阅读(1194) 评论(0) 推荐(0) 编辑
摘要:题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。分析设有n级台阶时有跳法f(n)种,当n>2时,第一次跳台阶可以跳一阶,此时跳法数目等于后面n-1级台阶的跳法f(n-1);当第一次... 阅读全文
posted @ 2019-03-19 12:46 如是说 阅读(229) 评论(0) 推荐(0) 编辑
摘要:题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39方法一递归 public int Fibonacci(int n) { if(n == 0) { return 0... 阅读全文
posted @ 2019-03-18 19:07 如是说 阅读(239) 评论(0) 推荐(0) 编辑
摘要:题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,... 阅读全文
posted @ 2019-03-18 14:38 如是说 阅读(129) 评论(0) 推荐(0) 编辑
摘要:题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。分析push时将数据插入到第一个栈,当要弹出时,先将第一个栈中所有值弹出,并全部添加到第二个栈中。再弹出第二个栈顶元素,再讲第二个栈剩余值全部弹出到第一个栈。代码:i... 阅读全文
posted @ 2019-03-18 14:36 如是说 阅读(215) 评论(0) 推荐(0) 编辑
摘要:题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。先来分析前序和... 阅读全文
posted @ 2019-03-18 13:53 如是说 阅读(227) 评论(0) 推荐(0) 编辑
摘要:题目描述输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。方法一采用栈的思想,先进后出。 public ArrayList printListFromTailToHead(ListNode listNode) { ArrayList list... 阅读全文
posted @ 2019-03-18 13:43 如是说 阅读(134) 评论(0) 推荐(0) 编辑
摘要:题目描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。方法一传过来的参数是StringBuffer,我们可以使用StringBuffer类的rep... 阅读全文
posted @ 2019-03-18 13:39 如是说 阅读(224) 评论(0) 推荐(0) 编辑
摘要:题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。实现:public class Solution { ... 阅读全文
posted @ 2019-03-18 13:32 如是说 阅读(150) 评论(0) 推荐(0) 编辑
摘要:快速排序介绍快速排序(Quick Sort)使用分治法策略,其基本思想是:通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另外一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序的目的。快排流程:从数列中选取一个... 阅读全文
posted @ 2019-03-16 22:34 如是说 阅读(348) 评论(0) 推荐(0) 编辑
摘要:归并排序介绍归并排序(Merge Sort)就是利用归并的思想实现的排序方法。它的原理是假设初始序列含有fn个记录,则可以看成是n个有序的子序列,每个子序列的长度为1,然后两两归并,得到[n2\frac{n}{2}2n​]([x]表示不小于x的最小整数)个长... 阅读全文
posted @ 2019-03-16 20:17 如是说 阅读(2761) 评论(0) 推荐(0) 编辑
摘要:堆的定义堆是具有下列性质的完全二叉树:每个节点的值都大于或等于其左右孩子节点的值,称为大顶堆;或者每个节点的值都小于或等于其左右孩子的值,称为小顶堆。如下图举例:通过堆的定义可知,根节点一定是对中所有节点的最大(小)值。较大(小)的节点靠近根节点(并不绝对,... 阅读全文
posted @ 2019-03-16 17:07 如是说 阅读(1293) 评论(0) 推荐(0) 编辑
摘要:希尔排序原理希尔排序(shell sort)这个排序方法又称为缩小增量排序,是1959年D·L·Shell提出来的。该方法的基本思想是:设待排序元素序列有n个元素,首先取一个整数increment(小于n)作为间隔将全部元素分为increment个子序列,所... 阅读全文
posted @ 2019-03-15 22:34 如是说 阅读(2210) 评论(0) 推荐(0) 编辑
摘要:直接插入排序介绍 直接插入排序的基本操作是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增1的有序表。 怎么理解呢?就是将n个待排序的元素看成一个有序表和一个无序表,开始时有序表中只有一个元素,无序表中有n-1个元素,排序过程中每... 阅读全文
posted @ 2019-03-15 21:12 如是说 阅读(6422) 评论(2) 推荐(2) 编辑
摘要:简单选择排序实现简单选择排序就是通过n-i次关键字之间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i (1 ≤ i ≤ n)个记录交换。代码实现:public class SelectSort { //置换 public void swap(i... 阅读全文
posted @ 2019-03-15 19:32 如是说 阅读(1645) 评论(2) 推荐(0) 编辑
摘要:冒泡排序是一种交换排序,它的基本思路是:两两比较相邻记录的关键字,如果反序则交换,知道没有反序的记录位置。依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,... 阅读全文
posted @ 2019-03-15 18:31 如是说 阅读(335) 评论(0) 推荐(0) 编辑
摘要:排序的定义假设含有n个记录的序列为{r1r_1r1​,r2r_2r2​,…,rnr_nrn​},其相应的关键字分别为{k1k_1k1​,k2k_2k2​,…,knk_nkn​},需确定1,2, 3, …, n的一种排列p1p_1p1​,kpk_pkp​,…,... 阅读全文
posted @ 2019-03-15 17:45 如是说 阅读(914) 评论(0) 推荐(0) 编辑
摘要:散列表查找定义散列技术是在记录的存储位置和它的关键字之间建立一个确定的对应关系f,是的每个关键字key对应一个存储位置f(key)。查找时,根据这个确定的对应关系找到给定值的key的对应f(key)。我们把这种对应关系f称为散列函数,又称哈希(Hash)函数... 阅读全文
posted @ 2019-03-15 15:33 如是说 阅读(3818) 评论(0) 推荐(0) 编辑
摘要:本文转载自:http://www.cnblogs.com/yangecnu/p/Introduce-B-Tree-and-B-Plus-Tree.html前面讲解了平衡查找树中的2-3树以及其实现红黑树。2-3树种,一个节点最多有2个key,而红黑树则使用染... 阅读全文
posted @ 2019-03-14 21:17 如是说 阅读(906) 评论(0) 推荐(0) 编辑
摘要:引言二叉排序树简单的实现在多数情况能够达到预期的查找效率,但是每个节点只能存储一个元素和只能有两个孩子,使得在大量数据下会造成二叉排序树的深度特别大,那么在进行查找时多次的访问会造成查找效率的下降,同时,在对二叉查找树进行插入时,可能会破坏二叉查找树的平衡。... 阅读全文
posted @ 2019-03-14 12:36 如是说 阅读(4219) 评论(0) 推荐(0) 编辑
摘要:AVL的定义平衡二叉树:是一种特殊的二叉排序树,其中每一个节点的左子树和右子树的高度差至多等于1。从平衡二叉树的名字中可以看出来,它是一种高度平衡的二叉排序树。那么什么叫做高度平衡呢?意思就是要么它是一颗空树,要么它的左子树和右子树都是平衡二叉树,且左子树和... 阅读全文
posted @ 2019-03-13 20:49 如是说 阅读(2057) 评论(0) 推荐(0) 编辑
摘要:二叉排序树的定义和性质二叉排序树又称二叉排序树。它或者是一个空树,或者是一个具有下列性质的二叉树:若它的左子树不空,则左子树上所有节点的值均小于它的根结构的值若它的右子树不空,则右子树上所有结点的值均大于它的根节点的值它的左、右子树也分别是二叉排序树如下图是... 阅读全文
posted @ 2019-03-12 15:13 如是说 阅读(1503) 评论(0) 推荐(0) 编辑
摘要:引言数据结构的最终目的是提高数据的处理速度,索引是为了加快查找所读而设计的一种数据机构。索引就是把一个关键字与它对应的记录相关联的过程一个索引由若干个索引项构成,每个索引项至少包含一个关键字和其对应的记录在存储器中的位置等信息。索引技术是组织大型数据库以及磁... 阅读全文
posted @ 2019-03-11 10:19 如是说 阅读(473) 评论(0) 推荐(0) 编辑
摘要:注意:斐波那契查找的前提和折半查找和插值查找的条件相同,即待查找的查找表必须是顺序存储且有序。 斐波那契查找与折半查找很相似,他是根据斐波那契序列的特点对有序表进行分割的。他要求开始表中记录的个数为某个斐波那契数小1,及n=f(k)-1。开始将... 阅读全文
posted @ 2019-03-10 22:44 如是说 阅读(219) 评论(0) 推荐(0) 编辑
摘要:插值查找和折半查找的思想是一样的,其代码机构也基本和折半查询相同://折半查找 public int Binary_Search(int[] a, int n, int key) { int low = 1, high = n, mid; while(l... 阅读全文
posted @ 2019-03-10 20:31 如是说 阅读(352) 评论(0) 推荐(0) 编辑
摘要:折半查找概念折半查找,又称二分查找。前提是线性表中的记录必须是关键码有序(由小到大或由大到小),线性表必须采用顺序存储。折半查找的基本思想是:在有序表中,取中间值为比较对象,如果给定的值和中间值的关键字相等,则查找成功;若给定值小于中间记录的关键字,则在中间... 阅读全文
posted @ 2019-03-10 20:01 如是说 阅读(2950) 评论(0) 推荐(0) 编辑
摘要:查找概论查找表是由同一类型的数据元素(或记录)构成的集合。关键字是数据元素中某个数据项的值,又称为键值,用它来标示一个数据元素。也可以标示一个记录的某个数据项(字段)的值,称之为关键码。若此关键字课可以唯一的标示一个记录,那么此关键字为主关键字。主关键字所在... 阅读全文
posted @ 2019-03-10 14:56 如是说 阅读(2551) 评论(0) 推荐(0) 编辑
摘要:引言 之前所说的拓扑排序是为了解决一个工程能否顺利进行的问题。但在生活中,我们还会经常遇到如何解决工程完成需要的最短时间问题。 举个例子,我们需要制作一台汽车,我们需要先造各种各样的零件,然后进行组装,这些零件基本上都是在流水线上同时成产的。加入... 阅读全文
posted @ 2019-03-10 13:43 如是说 阅读(6281) 评论(0) 推荐(0) 编辑
摘要:如果图中存在环(回路),那么该图不存在拓扑排序,在这里我们讨论的都是无环的有向图。什么是拓扑排序一个例子对于一部电影的制作过程,我们可以看成是一个项目工程。所有的工程都可以分为若干个"活动"的自工程。在这些活动之间,通常会受到一定的条件约束,如其中某些活动必... 阅读全文
posted @ 2019-03-08 22:42 如是说 阅读(5126) 评论(0) 推荐(0) 编辑
摘要:什么是单点登录单点登录SSO(Single Sign On),是目前常用的企业业务整合的解决方案之一。简单的说,就是在一个存在多个系统的环境下,用户在一处登录之后,就不用在其他系统中再次进行登录,登录一次,就可以取得该环境下其他所有系统的信任。为什么要用单点... 阅读全文
posted @ 2019-03-08 18:12 如是说 阅读(1395) 评论(1) 推荐(0) 编辑
摘要:参考:Markdown数学公式语法markdown最全数学公式速查 行内与独行行内公式:将公式插入到本行内,符号:$公式内容$,如:$xyz$独行公式:将公式插入到新的一行内,并且居中,符号:$$公式内容$$,如:$... 阅读全文
posted @ 2019-03-08 15:49 如是说 阅读(499) 评论(0) 推荐(0) 编辑
摘要:算法介绍和Dijkstra算法一样,Floyd算法也是为了解决寻找给定的加权图中顶点间最短路径的算法。不同的是,Floyd可以用来解决“多源最短路径”的问题。算法思路算法需要引入两个二维数组ShortPathTable和Patharc。ShortPathTa... 阅读全文
posted @ 2019-03-08 15:35 如是说 阅读(1124) 评论(0) 推荐(0) 编辑
摘要:什么是最短路径在网图和非网图中,最短路径的含义是不一样的。对于非网图没有边上的权值,所谓的最短路径,其实就是指两顶点之间经过的边数最少的路径。对于网图,最短路径就是指两顶点之间经过的边上权值之和最少的路径,并且我们称路径上的第一个顶点为源点,最后一个顶点为终... 阅读全文
posted @ 2019-03-08 14:08 如是说 阅读(802) 评论(0) 推荐(0) 编辑
摘要:Ubuntu 18.04在执行apt-get update时出现一下报错:W: GPG 错误:http://repo.mysql.com/apt/ubuntu bionic InRelease: 下列签名无效: EXPKEYSIG 8C718D3B5072E1F5 M... 阅读全文
posted @ 2019-03-05 21:29 如是说 阅读(11917) 评论(1) 推荐(0) 编辑
摘要:最小生成树一个连通图的生成树是一个极小的连通子图,它含有图中所有的顶点,但只有足以构成一棵树的n-1条边。我们将构造连通网的最小代价生成树称为最小生成树(Minimum Cost Spanning Tree)。普利姆算法(Prim)定义假设G=(V,E)是连通的,TE... 阅读全文
posted @ 2019-03-04 14:21 如是说 阅读(877) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示