Java
文章平均质量分 62
Java笔记
Hard Coder
生命不息,代码不止
展开
-
二叉树的链式存储结构(线索二叉树)
一、链式存储结构由于顺序存储二叉树的空间利用率较低,因此二叉树一般都采用链式存储结构,用链表结点来存储二叉树中的每个结点。在二叉树中,结点结构通过包括若干数据域和若干指针域,二叉链表至少包含3个域:数据域 data、左指针域 lchild和右指针域 rchild,如下图所示:其中,n 个结点的二叉链表中含有 n+1 [ 2n-(n-1)=n+1 ] 个空指针域。二、线索二叉树传统的二叉链表仅能体现出一种父子关系,不能直接得到结点在遍历中的前驱或后继。引入线索二叉树正是为了加快查找结点前驱和后继的速原创 2021-02-28 13:42:13 · 6796 阅读 · 0 评论 -
二叉树最大深度(高度)/结点个数 / 叶子结点个数 / 第k层结点个数的求解
一、二叉树最大深度(高度)//求二叉树最大深度/高度(DFS) public int maxDepth1(Node root) { if(root==null) {//空树高度为0 return 0; } int leftDepth=maxDepth1(root.left);//递归计算左子树高度 int rightDepth=maxDepth1(root.right);//递归计算右子树高度 return Math.max(leftDepth, rightDepth)+1;/原创 2021-02-07 22:14:31 · 1499 阅读 · 0 评论 -
平衡二叉树
一、平衡二叉树平衡二叉树又叫平衡二叉搜索树(Self-balancing Binary Search Tree),又被称为AVL树。平衡二叉树可定义为或者是一棵空树,或者是具有下列性质的二叉树:其左子树和右子树均为平衡二叉树,且左子树和右子树的高度差的绝对值不超过1。注意:平衡二叉树一定是二叉排序树。含有n个结点的平衡二叉树的最大深度为O(log2(n)),即平衡二叉树的平均查找长度为O(log2(n))。如下图所示为一棵平衡二叉树和一棵非平衡二叉树:二、平衡二叉树的插入平衡二叉树的插入过程的前原创 2021-02-07 15:29:18 · 21348 阅读 · 2 评论 -
二叉排序树/二叉查找树及其基本操作
一、二叉排序树二叉排序树,又称二叉查找树(BST(Binary Sort/Search Tree) )或者是一棵空树,或者是具有下列特性的二叉树:(1)若左子树非空,则左子树上所有结点的值均小于根结点的值。(2)若右子树非空,则右子树删所有结点的值均大于根结点的值。(3)左右子树分别为一棵二叉排序树。根据二叉排序树的定义,左子树结点值<根结点值<右子树结点值,则对二叉排序树进行中序遍历,可以得到一个递增的有序序列。如果有相同的值,可以将该节点放在左子节点或右子节点。E.g:下图所示的原创 2021-02-07 12:07:48 · 5546 阅读 · 0 评论 -
哈/赫夫曼树(最优二叉树)
一、哈/赫夫曼树的基本定义(1)路径:从树中一个结点到另一个结点之间的分支构成这两个结点之间的路径。(2)路径长度:路径上的分支数目。(3)树的路径长度:从树根到每一个结点的路径长度之和。(完全二叉树即为树的路径长度最短的二叉树)(4)结点的带权路径长度:从该结点到树根之间的路径长度和结点上权的乘积。(5)树的带权路径长度:树的所有结点的带权路径之和(WPL,Weighted Path Length )。假设有 n 个权值构建一颗有 n 个叶子结点的二叉树,每个叶子结点带权 ,则其中带权路径长度原创 2021-02-05 16:11:19 · 572 阅读 · 0 评论 -
堆排序算法
一、堆排序算法基本思想堆排序是利用堆数据结构而设计的一种排序算法,堆排序是一种选择排序,其最坏,最好,平均时间复杂度均为O(nlogn),同时也是不稳定排序。堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆, 如下图所示,其中大顶堆的性质**:arr[i] >= arr[2i+1] && arr[i] >= arr[2i+2]**每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆,如下图所示,其中小顶堆性质:arr[i] <=原创 2021-02-05 14:37:36 · 6944 阅读 · 1 评论 -
二叉树的顺序存储结构
一、顺序存储结构二叉树的顺序存储结构是指用一组地址连续的存储单元依次自上而下、自左至右存储完全二叉树上的结点元素,即将完全二叉树上编号为 i 的结点元素存储在一维数组下标为 i-1 的分量中。依据二叉树的性质,完全二叉树和满二叉树采用顺序存储比较合适,树中结点的序号可以唯一地反映结点之间的逻辑关系,这样既能最大地节省存储了空间,又能利用数组元素的下标值确定结点在二叉树中的位置,以及结点之间的关系。从数据存储来看,数组存储方式和树的存储方式可以相互转换,即数组可以转换成树,树可以转换成数组。二、顺序存原创 2021-02-05 10:45:56 · 13241 阅读 · 4 评论 -
二叉树的查找(前/中/后序遍历查找)
一、前序遍历查找‘1、判断当前结点的值是否等于需要查找的结点的值,若相等,则直接返回当前结点;2、若不相等,则判断当前结点的左子结点是否为空,若不为空,则递归前序遍历查找;3、若左递归前序遍历查找,可以找到结点,则直接返回该结点;4、否则继续判断,当前的结点的右子结点是否为空,若不空,则继续向右递归前序遍历查找。public TreeNode preOrderSearch(int val) { if(this.val==val) {//若当前结点为需要查找的结点,则直接返回 retu原创 2021-02-05 09:52:01 · 1060 阅读 · 1 评论 -
二叉树的层次遍历
一、层次遍历层次遍历即为从上到下,从左到右依次访问二叉树的每个结点。二、层次遍历实现1、实现思路(1)我们定义一个队列,先将根结点入队;(2)当前结点是队头结点,将其出队并访问;(3)若当前结点的左结点不为空将左结点入队;若当前结点的右结点不为空将其入队即可。2、实现代码public class LevelOrder { static List<Integer> levellist=new ArrayList<>(); public static void l原创 2021-02-03 21:10:52 · 20075 阅读 · 0 评论 -
二叉树的遍历(先/前序遍历、中序遍历和后序遍历)
一、先/前序遍历若二叉树为空,则空操作;否则(1)访问根结点;(2)左子树不为空先序遍历左子树;(3)右子树不为空先序遍历右子树。1、递归实现public static void preOrder(TreeNode treeNode) { prelist.add(treeNode.val);//访问根结点 if(treeNode.left!=null) {//左子树不为空先序遍历左子树 preOrder(treeNode.left); } if(treeNode.rig原创 2021-02-03 20:23:09 · 586 阅读 · 0 评论 -
哈希表--管理公司员工信息
一、哈希表基本介绍哈希表(Hash table,又称散列表),是根据关键码值(Key value)而直接进行访问的数据结构。其通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。实现哈希表的两种方法:(1)数组+链表(2)数组+红黑二叉树二、哈希函数哈希函数:建立起数据元素的存放位置与数据元素的关键字之间的对应关系的函数。即使用哈希函数可将被查找的键转换为数组的索引。理想情况下它应该运算简单并且保证任何两个不同的关键字映射到不同的原创 2021-02-03 15:07:41 · 642 阅读 · 0 评论 -
斐波那契查找(黄金分割法查找)算法
一、斐波那契查找算法基本思想斐波那契查找算法又称为黄金分割法查找算法,是一种有序查找算法。斐波那契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、····。在数学上,斐波那契被递归方法如下定义:F(1)=1,F(2)=1,F(n)=f(n-1)+F(n-2) (n>=2)。该数列越往后相邻的两个数的比值越趋向于黄金比例值(0.618)。斐波那契查找是在二分查找的基础上根据斐波那契数列进行分割。在斐波那契数列找一个等于大于查找表中元素个数的数F(n),将原查找表扩展原创 2021-02-03 13:50:53 · 2227 阅读 · 1 评论 -
插值查找算法
一、插值查找算法基本思想插值查找是一种在有序数组(前提条件)中查找某一特定元素的查找算法。插值查找基于二分查找**,不同的是插值查找每次从自适应mid处开始查找**,提高查找效率。二分查找查找点和插值查找查找点计算如下:其中key为待查找元素,low为待查找区间左端,high为待查找区间右端,mid为自适应查找点。插值查找将上述的比例参数1/2改进为自适应,根据待查找元素在整个有序数组中所处的位置,使mid值的变化更靠近待查找元素key,可以间接地减少了比较次数。二、代码实现1、递归方式pa原创 2021-02-03 11:34:10 · 2420 阅读 · 0 评论 -
二分查找(折半查找)算法
一、二分查找算法基本思想二分查找(Binary Search),又称折半查找,是一种在有序数组(前提条件)中查找某一特定元素的查找算法。查找过程从数组的中间元素开始,若中间元素正好是要查找的元素,则查找过程结束;若某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且和开始一样从中间元素开始比较。若在某一步骤时数组为空,则代表找不到。二、二分查找算法图解在二分查找算法中,查找37只需要三步;在线性查找算法中,查找37需要11步。三、代码实现1、非递归方式packag原创 2021-02-03 11:04:09 · 2686 阅读 · 0 评论 -
基数排序算法
一、基数排序算法基本思想基数排序将所有元素统一为同样的数位长度, 数位较短的数前面补零。然后, 从最低位开始, 依次进行一次排序,这样从最低位排序一直到最高位排序完成以后, 原数组就变成一个有序序列。二、基数排序图解三、代码实现package Sort;import java.util.Arrays;public class RadixSort { public static void radixsort(int[] arr) { int max=arr[0]; for(int原创 2021-01-31 17:11:46 · 3633 阅读 · 2 评论 -
归并排序算法
一、归并排序算法基本思想归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法,将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2-路归并。二、归并排序图解三、代码实现package Sort;import java.util.Arrays;public class MergeSort { public static void mergesort(int[] arr,int left,int right,原创 2021-01-31 16:21:37 · 808 阅读 · 0 评论 -
快速排序算法
一、快速排序算法基本思想快速排序通过一趟排序将待排元素分割成独立的两个部分,其中一部分元素均比另外一部分元素小,则可以对这两部分元素再继续进行排序,以达到整个元素有序。二、快速排序图解三、代码实现package Sort;import java.util.Arrays;public class QucikSort { public static void quicksort(int[] arr,int low,int high) { if(low<high) { int原创 2021-01-31 15:29:10 · 1322 阅读 · 0 评论 -
希尔(Shell)排序算法
一、希尔排序算法基本思想希尔排序又称为“缩小增量排序”,是简单插入排序经过改进之后的一个更高效的版本。希尔排序按照增量将数组进行分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至 1 时,整个文件恰被分成一组,算法即终止。二、希尔排序图解三、代码实现1.1、基于交换法的希尔排序package Sort;import java.util.Arrays;public class ShellSort { public static void shel原创 2021-01-31 14:53:17 · 404 阅读 · 0 评论 -
插入排序算法
一、插入排序基本思想将 n 个待排序的元素看成为一个有序表和一个无序表。开始时有序表中只包含一个元素, 无序表中包含有 n-1 个元素, 排序过程中每次从无序表中取出第一个元素, 把它的值依次与有序表元素的值进行比较, 将它插入到有序表中的适当位置, 使之成为新的有序表。二、插入排序图解黄色表示已排序部分,蓝色表示未排序部分,红色表示当前正在处理的key。三、代码实现package Sort;import java.util.Arrays;public class InsertSort原创 2021-01-31 14:03:46 · 3291 阅读 · 0 评论 -
选择排序算法
一、选择排序算法基思想从数组中选择最小元素,将它与数组的第一个元素交换位置。再从数组剩下的元素中选择出最小的元素,将它与数组的第二个元素交换位置。不断进行这样的操作,直到将整个数组排序,即数组长度为n需要需要进行n-1次选择排序才可以完成从小到大的排序,一般选择排序的平均时间复杂度为O(n^2)。二、选择排序图解三、代码实现package Sort;import java.util.Arrays;public class SelectSort { public static void s原创 2021-01-31 12:24:09 · 1184 阅读 · 1 评论 -
冒泡排序算法
一、冒泡排序算法基本思想将第一个元素和第二个元素进行比较,若为逆序则将两个元素交换,然后比较第二个元素和第三个元素。依次类推,直至第 n-1个元素和第 n个元素进行比较为止。上述过程称为第一趟冒泡排序,其结果使最大值元素被放置在最后一个位置(第 n个位置)。然后进行第二趟冒泡排序,对前 n-1个元素进行同样操作,其结果是使第二大元素被放置在倒数第二个位置上(第 n-1个位置)。二、冒泡排序图解黄色表示已排序部分,蓝色表示未排序部分。三、代码实现package Sort;import java原创 2021-01-31 11:46:05 · 49745 阅读 · 12 评论 -
八皇后问题(递归)
一、八皇后问题八皇后问题, 是一个古老而著名的问题, 是回溯算法的典型案例。 该问题是国际西洋棋棋手马克斯· 贝瑟尔于1848 年提出: 在 8× 8 格的国际象棋上摆放八个皇后, 使其不能互相攻击, 即: 任意两个皇后都不能处于同一行、同一列或同一斜线上, 问一共有多少种摆法。二、递归解决1、思路分析(1)第一个皇后先放第一行第一列;(2)第二个皇后放在第二行第一列、然后判断是否OK, 如果不OK,继续放在第二列、第三列、依次把所有列都放完,找到一个合适;(3)继续第三个皇后,还是第一列、原创 2021-01-28 11:54:58 · 2827 阅读 · 0 评论 -
迷宫问题(递归)
一、递归递归即方法自己调用自己,每次调用时传入不同的变量。递归需要遵循的规则:(1)执行一个方法时, 就创建一个新的受保护的独立空间(一个线程有自己独立的一个栈空间,每个方法调用对应着一个栈帧);(2)方法的局部变量是独立的, 不会相互影响;(3)若方法中使用的是引用类型变量, 就会共享该引用类型的数据;(4)递归需要边界条件,当边界条件不满足时,递归前进;当边界条件满足时,递归返回。递归必须向边界条件逼近,否则将会无限递归出现java.lang.StackOverflowError(栈溢出错原创 2021-01-28 10:54:13 · 1998 阅读 · 0 评论 -
中缀表达式(算数表达式)转成后缀表达式(逆波兰表达式)并求计算值
一、求后缀表达式计算值(1)从左到右扫描表达式,遇到数字时直接入栈,遇到运算符时弹出栈顶两个数;(2)根据运算符对两个数进行相应计算(次顶元素 op 栈顶元素),并将计算结果入栈;(3)重复上述过程直至表达式的最右端,剩余最后一个数在栈中弹出即为最终计算结果。二、中缀表达式转换为后缀表达式(1) 初始化两个栈:运算符栈S1和储存中间结果的栈S2;(2) 从左至右扫描中缀表达式;(3) 遇到操作数时,将其压入S2;(4) 遇到运算符时,比较其与S1栈顶运算符的优先级:(4-1) 如果S原创 2021-01-27 19:14:43 · 749 阅读 · 0 评论 -
中缀表达式(算数表达式)转成前缀表达式(波兰表达式)并求计算值
一、求前缀表达式计算值(1)从右到左扫描表达式,遇到数字时直接入栈,遇到运算符时弹出栈顶两个数;(2)根据运算符对两个数进行相应计算(栈顶元素 op 次顶元素),并将计算结果入栈;(3)重复上述过程直至表达式的最左端,剩余最后一个数在栈中弹出即为最终计算结果。二、中缀表达式转换为前缀表达式(1) 初始化两个栈:运算符栈S1和储存中间结果的栈S2;(2) 从右至左扫描中缀表达式;(3) 遇到操作数时,将其压入S2;(4) 遇到运算符时,比较其与S1栈顶运算符的优先级:(4-1) 如果S原创 2021-01-27 16:36:36 · 687 阅读 · 0 评论 -
使用数组和单链表模拟栈的基本操作
一、栈栈(Stack)是只允许在一端进行插入或删除操作的线性表。线性表允许进行插入删除的一端为栈顶(Top),不允许进行插入和删除的一端为栈底(Bottom)。根据栈的定义可知, 最先放入栈中元素在栈底, 最后放入的元素在栈顶;删除元素刚好相反, 最后放入的元素最先删除, 最先放入的元素最后删除,即栈的特性是先进后出(First In Last Out,FILO)。栈的示意图如下图所示:入栈的操作示意图如下图所示:出栈的操作示意图如下图所示:二、使用数组模拟栈的基本操作1、基本定义(1)原创 2021-01-25 20:30:47 · 360 阅读 · 0 评论 -
单链表的基本操作
一、链表线性表的链式存储又称为单链表,其是指通过一组任意的存储单元来存储线性表中的数据元素(该存储单元既可以是连续的,又可以是不连续的)。链表的存储空间不连续且属于线性结构,其具有以下特点:(1)链表以节点方式存储为链式存储;(2)data即数据域存放数据,next即指针域指向下一个结点;(3)链表分为带头结点和不带头节点的链表,根据实际需求来确定。链表结构如图所示:头结点和头指针的区别:不管链表是否带头结点,头指针始终指向链表的第一个结点,而头结点是带头结点的链表中的第一个结点,结点内通常不原创 2021-01-24 16:23:07 · 2486 阅读 · 0 评论 -
使用数组模拟环形队列
在阅读本篇博客前可以先阅读:使用数组模拟队列一、数组模拟环形队列思路解决的关键:取模(%)基本变量(1)maxSize:队列容量(即数组长度)(2)arr:模拟队列数组(3)front:指向队头元素的前一个元素,初始值为0(4)rear:指向队尾元素,初始值为0(一定注意此处的队头和队尾的定义与数组模拟队列时的不同,其相应的操作会有所不同)PS:此处的front指向队列的第一个元素,即arr[fromt]为队列的第一个元素;此处的rear指向队列的最后一个元素的后一个位置,空出一个元原创 2021-01-19 22:28:51 · 441 阅读 · 0 评论 -
使用数组模拟队列
一、队列队列是一种先进先出(first in first out,即FIFO)的线性表。它只允许在表的一端进行插入,而在另一端删除元素。在队列中,允许插入的一端叫做队尾(rear),允许删除的一端叫做队头(front)。队列是一个有序表,可以用数组或链表来实现。示意图如下图所示:二、数组模拟队列思路基本变量:(1)maxSize:队列容量(即数组长度)(2)arr:模拟队列数组(3)front:指向队头元素的前一个元素,初始值为-1(4)rear:指向队尾元素,初始值为-1(一定注意此处原创 2021-01-19 21:32:54 · 620 阅读 · 0 评论 -
Java格式化输出的四种方法
一、System.out.printf()Java SE5推出了C语言printf()风格的格式化输出功能。String str="Java";double pi=3.14;int i=100;//"%"表示进行格式化输出,其后是格式的定义System.out.printf("%f\n",pi);//"f"表示格式化输出浮点数System.out.printf("%d\n",i);//"d"表示格式化输出十进制整数System.out.printf("%o\n",i);//"o"表示格式化输原创 2021-01-19 19:56:58 · 43785 阅读 · 3 评论 -
稀疏数组及其与原始数组的转换
一、稀疏数组定义什么是稀疏数组?人们无法给出确切的定义,它只是一个凭人们直觉来了解的概念。假设在 m * n 的 矩阵中,有 t 元素不为零。令 a = t / (m * n)称a为矩阵的稀疏因子通常认为a<=0.05时即为稀疏矩阵。原始数组中存在大量的无效数据,占据了大量的存储空间,为了节省存储空间,可以对这类矩阵进行压缩存储。所谓压缩存储是指:为多个值相同的元值只分配一个存储空间,对零元不分配空间。二、稀疏数组的处理稀疏数组可由表示非零元的三元组及其行列数唯一确定。稀疏数组为二维数组,行数原创 2021-01-19 17:15:03 · 223 阅读 · 0 评论 -
Java中replace、replaceAll和replacFirst的区别
一、replace、replaceAll和replaceFirst的用法1、replace(CharSequence target, CharSequence replacement) ,用replacement替换所有的target,两个参数都是字符串。2、replaceAll(String regex, String replacement) ,用replacement替换所有的regex匹配项,regex是个正则表达式,replacement是字符串。3、replaceFirst(String原创 2021-01-02 20:09:15 · 1049 阅读 · 1 评论 -
操作系统-银行家算法(Java实现)
一、银行家算法思想银行家算法是最著名的死锁避免算法,其思想是:将操作系统视为银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求分配资源相当于用户向银行家贷款。操作系统按照银行家制定的规则为进程分配资源。进程运行之前先声明对各种资源的最大需求量,当进程在执行继续申请资源是,先测试该进程已占用的资源数与本次申请的资源数之和是否超过该进程声明的最大需求量。若超过则拒绝分配资源,若未超过则再测试系统现存的资源能否满足该进程尚需的最大资源量,若能满足则按当前申请量分配资源,否则也要推迟分配。二、原创 2020-12-31 10:39:13 · 27709 阅读 · 8 评论 -
Java异常之InputMismatchException的解决
一、写在前面InputMismatchException异常是输入不匹配异常,即输入的值数据类型与设置的值数据类型不能匹配。二、异常的出现原因在使用Scanner进行输入时,报出InputMismatchException异常,其代码如下:public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("请输入一个数字:"); int x=sc.next原创 2020-12-31 10:04:25 · 35492 阅读 · 3 评论 -
操作系统生产者-消费者问题(PV操作)(Java实现)
一、问题描述一组生产者进程和一组消费者进程共享一个初始为空、大小n的缓冲区,只有缓冲区没满时,生产者才能把资源放入缓冲区,否则必须等待;只有缓冲区不为空时,消费者才能从中取出资源,否则必须等待。由于缓冲区是临界资源,它只允许一个生产者放入资源,或一个消费者从中取出资源。二、问题分析(1)、关系分析。生产者和消费者对缓冲区互斥访问是互斥关系,同时生产者和消费者又是一个相互协作的关系,只有生产者生产之后,消费者只能才能消费,它们还是同步关系。(2)、整理思路。只有生产生产者和消费者进程,正好是这两个进程原创 2020-12-31 09:29:30 · 8630 阅读 · 3 评论 -
Java统计数组中各个数字出现的个数和字符串中各个字符出现的个数
一、前言对于统计个数问题,我们一般利用HashMap来解决,其中key表示原始元素值,value表示其出现个数或出现次数。主要步骤为:1、创建一个HashMap<Character, Integer>型或HashMap<Integer,Integer>型的HashMap对象map;2、遍历数组或字符串,对其中元素分情况讨论:(1)map的key中无此元素,此时将此元素的个数置为1;(2)map的key中有此元素,首先需将该元素的个数取出,更新加一后再放入map中;(3)原创 2020-12-13 10:52:45 · 4292 阅读 · 0 评论 -
Java实现电脑的定时自动关机
一、关于Runtime.getRuntime().exec()在java中,RunTime.getRuntime().exec()实现了调用服务器命令脚本来执行功能需要。 同时在使用RunTime.getRuntime().exec()时会提示异常,我们需要throws IOException抛出异常。二、Java实现电脑的定时自动关机package fighting;import java.io.IOException;public class fighting{ public static原创 2020-12-01 23:17:19 · 1138 阅读 · 0 评论 -
短信API接口
一、关于短信API接口第三方短信服务商提供短信API接口,短信一般是编辑好内容,调用接口发送即可。我们这里提供一个注册好的账号,其中短信API服务器地址为:https://itdage.com/kkb/kkbsms参数列表为:key:秘钥,值为:xzk;number:接收验证码的手机号;code:A-Za-z0-9的验证码内容短信模板如下:作业已完成!验证码是:xxxxxx。如非本人操作,请 忽略!(因为由于不是本人账号,该短信模板无法修改,如有需要可以自行去申请注册账号购买短原创 2020-12-01 22:52:42 · 10717 阅读 · 2 评论 -
Java位运算之与(&)非(~)或(|)异或(^)
位运算符主要针对两个二进制整数的位进行逻辑运算,主要有与(&)、非(~)、或(|)、异或(^),下面分别介绍其运算规则。一、与(&)与(&)的运算规则:1、1 & 1 = 1;2、0 & 1 = 1 & 0 = 0;3、0 & 0 =0以13&17为例,13的二进制为1101,17的二进制为10001,当13和17进行&运算时,由于17有五位,13只有四位,将13的二进制补成五位为01101,根据以上规则,对应的每一位进原创 2020-11-30 23:34:22 · 361 阅读 · 0 评论 -
Java编程之二分法查找(折半查找)
一、题目假设有一个数组 { 12, 23, 34, 45, 56, 67, 77, 89, 90 },现要求采用二分法找出指定的数值并将其在数组的索引返回,若没有找到则返回 -1。二、实验代码package fighting;import java.util.Arrays;public class fighting{ static int search(int[] a,int value) { int low=0;//指针low表示待查元素所在范围的下界,下界索引从0开始,则上界应为数组原创 2020-11-22 18:35:23 · 784 阅读 · 0 评论