![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
你赖东东不错嘛~
仅仅是记录
展开
-
合并两个已有序的数组
比较简单:对有序数组a,b,求a,b组成的有序数组arr 1、a中最大 < b 最小,先拷贝a至arr,再拷贝b,至arr。 2、b中最大 < a中最小,先拷贝b至arr,再拷贝a至arr。 3、无1,2极端情况,依次取a,b首元素比较,将较小者放入arr。注意考虑a,b数组长度不相等时,长度更长者未能遍历完的情况。 public static int[] merge...原创 2018-05-12 13:39:27 · 135 阅读 · 0 评论 -
归并排序——递归实现
/** * 此递归排序的merge,并不是将数组a,b合并成c * 而是在原数组上,将下标left~mid与mid+1~right的两个数据段(相当于两个数组)合并成一个有序数组,再拷贝到原数组的对应位置,这都是在对原数组操作 */ public class MergeSort { public static void main(String[] args) { in...原创 2018-06-20 16:56:56 · 294 阅读 · 0 评论 -
折半查找、插入查找、斐波那契查找
折半查找前提:数据有序。思想:将key与数组中间值arr[middle]比较,若key>arr[middle],说明目标值在数组右边部分,继续在数组右半边查找,同理,key<arr[middle],继续在数组左半边查找。重复以上过程,直至key = arr[middle]。找到目标数据。时间复杂度:O(logn)/** * @return 关键字在数组中的位置 */...转载 2018-06-20 16:57:36 · 218 阅读 · 0 评论 -
排序算法(一):冒泡,简单选择,直接插入,希尔排序
注:以下提到的数组均可替换为表结构。 冒泡排序:依次比较相邻的两个数,如果不满足规定的排序规则,就交换顺序,依次往复,直至有序,主要操作为比较和交换。时间复杂度 O(n2),稳定。 从前往后 //标志是否交换过位置,若=false,说明数组已经达到有序,不必再进行。 boolean change = true; for (int i = 0;i < length -1 &&a...原创 2018-06-20 16:55:47 · 150 阅读 · 0 评论