- 博客(6)
- 资源 (3)
- 收藏
- 关注
原创 Java实现插值查找算法 Insert search
下面带来Java版本插值查找算法的实现,本篇一些概念沿用上一篇博客,入数组左索引为left,右索引为right。先说明一下,插值查找算法要求待查找的数组为有序的。插值查找原理:1.插值查找算法类似于二分查找,不同的是插值查找每次从只适应的mid处开始查找;2.在二分查找中,求mid的公式为:插值算法将求mid的公式改进为:对应的代码为:int mid = left + (right - left) * (findVal - arr[left]) / (arr[right] - arr[l
2020-08-25 09:06:26 652
原创 Java实现二分查找及其优化
在Java中常用的查找算法有四种:1.顺序查找(不要求数组有序,挨个遍历进行比对);2.二分查找(要求数组有序);3.插值查找;4.斐波那契查找本文使用递归思想带来二分查找及其优化二分查找思路分析1.首选确定该数组中间下标mid=(left+right)/2;2.然后让需要查找的数findVal与arr[mid]比较;2.1findVal>arr[mid]说明要查找的数在mid的右边,因此需要递归的向右查找;2.2findVal<a...
2020-08-24 22:30:44 649
原创 Java实现基数排序及其推导过程 Radix Sort
本文带来八大排序算法之基数排序。基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort),它是通过键值的各个位的值,将要排序的元素分配至某些"桶“中,从而达到排序的作用。基数排序是效率高的稳定性的排序算法。基数排序是桶排序的扩展。基数排序基本思想:将所有待比较的数值统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序,这样从最低位排序一直到最高位排序完成以后,数位就变成一个有序序列。见下图(以数
2020-08-24 09:26:33 251
原创 Java实现归并排序 Merge Sort
本文带来八大排序算法之归并排序算法。归并排序是利用归并思想实现的排序算法,该算法采用经典的分治DAC(divide -and -conquer)策略。分治法将问题分(divide)成一些小的问题,然后递归求解,而治(conquer)的阶段将分的阶段得到的各答案“修补”在一起,即分而治之。图解:代码实现:import java.util.Arrays;public class MergeSort { // Driver method public static..
2020-08-19 23:22:40 476
原创 Java实现快速排序 Quick Sort
本文带来八大排序算法之快速排序算法。快速排序(QuickSort)是对冒泡排序的一种改进。基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程通过递归进行,以此达到整个数据变成有序序列。因此快速排序有一个重要概念就是分区。如何分区,则需要找一个中轴值(pivot),不同的版本的快速排序算法对中轴值pivot的选择不同:1.总是选择第一个元素为中轴值pivot;2.总是选择最后一个
2020-08-10 23:20:26 270
原创 Java实现插入排序及其优化 Shell Sort
本文带来八大排序算法之希尔排序。希尔排序可以认为是插入排序的一种优化算法。在上一篇插入排序的举例数组中,当第二轮排序过后,数组变为[34, 101, 119, 1],此时如果将最后一个元素放到最前,则要经历如下过程:[34, 101, 119, 119][34, 101, 101, 119][34, 34, 101, 119][1, 34, 101, 119]结论:当需要插入的数是较小的数时,数组前方的元素后移次数明显增多,对效率有影响。希尔排序也是一种插入排序,它是简单插入排序
2020-08-03 23:07:18 336
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人