Java算法
晓风残月Lx
今宵酒醒何处,杨柳岸,晓风残月。
展开
-
单边、双边循环快速排序
2.j指针负责从右到左找比基准点小的元素,i指针负责从左到右找比基准点大的元素,一旦找到,二者交换,直到i=j。3.最后基准点要与i(此时i,j 相交)交换元素,i即为分区位置。j 指针负责找到比基准点小的元素,一旦找到则与 i 进行交换。i 指针维护小于基准点元素的边界,也是每次交换的目标索引。1.选择最左元素作为基准点元素。最后基准点与 i 交换,i 即为分区位置。注意:基准点元素在最左边 ,选择最右元素作为基准点元素。原创 2022-10-23 08:03:40 · 184 阅读 · 0 评论 -
选择排序法
选择排序法:不稳定排序。冒泡排序法:稳定排序。所谓的不稳定和稳定,简单来说就是在一个数组中相同数的先后排序,冒泡排序不会更改原数组相同数字的前后顺序,选择排序可能会更改原数组相同数字的前后顺序。首先,先说一下选择排序法和冒泡排序法的区别。原创 2022-10-13 13:21:19 · 154 阅读 · 0 评论 -
冒泡排序及优化
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。我们继续优化,在运行代码后发现,我们虽然解决了每一轮冒泡排序没有交换的问题,但是在第一次内循环时,数组后面几个数已经是排列有序的,但第二次和第三次冒泡排序还是将其进行比较,并没有发生交换。最初的冒泡排序运行后,可以看出在后几轮排序中数组已经排列好的,却仍然继续进行了比较,我们可以添加一个布尔值进行对比,他在每一轮的冒泡没有发生交换时,我们就将循环停止。在不用管算法的优化,最初的应该就是符合前一个大于后一个,就执行两个两个的交换。原创 2022-10-12 14:53:00 · 100 阅读 · 2 评论 -
Java二分查找法以及整数溢出处理
1.用位运算处理,向右移一位,相当于正数除以2的操作。对于超出范围输出负数而无法计算的值,其二进制首位为1,右移操作后,首位为0,即可进行下一步操作。其实很好解决,我们都知道Java中的数据最后都是转换为二进制,整数也是如此,总结:用位运算更加方便和快捷,计算机更偏向于二进制的计算,推荐使用位运算。中,每次从中间开始对比,一次筛选数组的一半,最后找到需要的数。在这一串二进制中,首位为0表示为正数,为1表示为负数,代码很简单,重要的是思想,注意返回的是数组索引值。如果有错误的地方,请大家指正,我们一同进步!原创 2022-10-11 12:52:55 · 274 阅读 · 0 评论