这篇文章是常见数据结构与算法整理总结的下篇,上一篇主要是对常见的数据结构进行集中总结,这篇主要是总结一些常见的算法相关内容,文章中如有错误,欢迎指出。 一、概述 二、查找算法 三、排序算法 四、其它算法 五、常见算法题 六、总结 一、概述 以前看到这样一句话,语言只是工具,算法才是程序设计的灵魂。的 ...
分类:
编程语言 时间:
2019-03-21 00:53:41
阅读次数:
160
二分查找针对的是一个有序的数据集合,查找思想有点类似分治思想。每次都通过跟区间的中间元素对比,将待查找的区间缩小为之前的一半,直到找到要查找的元素,或者区间被缩小为0。 时间复杂度:O(logn) 一、二分查找容易出错的3个地方: 1、循环退出条件 注意是low <= high. 2、mid的取值 ...
分类:
编程语言 时间:
2019-03-20 20:57:45
阅读次数:
204
二分查找算法 你观察这个列表,这是不是一个从小到大排序的有序列表呀? 如果这样,假如我要找的数比列表中间的数还大,是不是我直接在列表的后半边找就行了? 这就是二分查找算法! 那么落实到代码上我们应该怎么实现呢? 简单版二分法 l = [2,3,5,10,15,16,18,22,26,30,32,35 ...
分类:
编程语言 时间:
2019-03-19 21:39:10
阅读次数:
151
二分查找又称折半查找法,是一种重要的查找算法。它的主要的应用是从一个给定的序列中查找指定的元素,二分查找的原理比较简单此处不再赘述。 从实现的角度看,有递归方法和非递归方法。 下面分别给出二分查找的递归实现和非递归实现方法: 非递归实现: 这里面容易出错的地方有: 1. 代码第4行的判断条件是lef ...
分类:
其他好文 时间:
2019-03-15 23:12:25
阅读次数:
267
Collections与Collection不同,Collection是接口,而Collections则是工具类。类Collections在java.util包中。 Collections源码中包含多种私有成员方法,以下是Collections部分成员方法截图: 我们常用到Collections工具 ...
分类:
其他好文 时间:
2019-03-10 20:41:00
阅读次数:
158
算法学习——二分查找 注意点 1. 二分查找的前提是有序的数组 2. 建议使用[start,end)的区间寻找,符合规范 3. 使用的是递归法 递归的人口 递归的出口 private static int find(int[] temp, int start, int end, int x) { i ...
分类:
编程语言 时间:
2019-03-08 20:51:59
阅读次数:
204
线性表的查找://顺序查找//如果找到,返回数组下标;//时间复杂度O(n); class Solution{ public int seqSearch(int[] a,int key){ for (int i=0; i<a.length; i++){ if (a[i]==key) return i ...
分类:
编程语言 时间:
2019-03-07 14:26:29
阅读次数:
203
二分搜索算法是分支策略的典型应用,具体是在给定的有n个元素的已排序序列a中找出一个特定元素。 基本思想:将n个元素分为两半,取a[n/2]与x进行比较, 如果x<a[n/2],继续在数组a的左半部分搜索。 如果x>a[n/2],继续在数组a的右半部分搜索。 (图片源自百度图片) 查找算法对比: 1、 ...
分类:
其他好文 时间:
2019-02-28 23:12:22
阅读次数:
393
```C++ #include #include #define MAXSIZE 10 #define NotFound 0 typedef int ElementType; typedef int Position; typedef struct LNode *List; struct LNode... ...
分类:
编程语言 时间:
2019-02-24 00:41:51
阅读次数:
190
1 #include 2 #include 3 #define MAXSIZE 10 4 #define NotFound 0 5 typedef int ElementType; 6 typedef int Position; 7 typedef struct LNode *List; 8 str... ...
分类:
编程语言 时间:
2019-02-23 18:23:03
阅读次数:
280