算法
小科比000
程序媛。。。
展开
-
Java中的<< 和 >> 和 >>>
<<表示左移,不分正负数,低位补0; 3 << 2 //12 则是将数字3左移2位 322 = 3*(2的2次方)数学意义:在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2的1次方,左移n位就相当于乘以2的n次方。>>表示右移,如果该数为正,则高位补0,若为负数,则高位补1;数学意义:右移一位相当于除2,右移n位相当于除以2的n次方。>>>表示无符号右移,也叫逻辑右移,即若该数为正,则高位补0,而若该数为负数,则右移后高位同样补0原创 2021-01-28 17:26:03 · 568 阅读 · 0 评论 -
使用1行代码在Java中实现字符串的逆序!
字符串逆序,这个问题有很多衍生问题,他的实现方式也有很多。今天收藏的是,代码行数最好的实现方式。那就是使用递归的方式,用1行代码实现字符串逆序。代码如下:public class reverseStringDemo { public static void main(String args[]) { System.out.println("结果:"+reverseString("Hollis is a Coder")); } private static S原创 2020-09-09 12:50:11 · 383 阅读 · 0 评论 -
排序算法之(三)快速排序
原理:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。思路:每次都拿分割好的序列的首元素(末元素)作为中轴进行分割第二次排序之后都在分割好的两部分中再次递归进行交换元素排序排好的中轴元素就不带他玩了举例说明:排序数组int[] a...原创 2018-12-13 16:13:50 · 120 阅读 · 0 评论 -
实现大整数相加
如果两个很大很大的整数,大的连long类型都装不下(比如两个100位的整数),如何求出他们的和?代码如下:public class BigNumSum { public static void main(String [] args){ System.out.println(bigNumberSum("72670975231800000001" ,"9548125312...原创 2018-12-06 15:06:11 · 191 阅读 · 0 评论 -
排序算法之(一)冒泡排序
原理:比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。简单理解为:第一次找到所有元素中最大的一个放在最后一个位置上,不再变动;第二次找到剩余元素中最大的放在倒数第二个...原创 2018-12-07 16:21:46 · 264 阅读 · 0 评论 -
排序算法之(二)选择排序
原理:每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。选择排序是不稳定的排序方法。思路:n个数进行n-1次排序每一次排序都在剩余的元素中找到最小(最大)的元素排好的元素就不带他玩了举例说明:排序数组int[] arr={6,3,8,2...原创 2018-12-11 14:50:32 · 697 阅读 · 0 评论