首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
Java基础知识强化61:经典查找之 常见查找算法小结
】的更多相关文章
Java基础知识强化61:经典查找之 常见查找算法小结
一.顺序查找 条件:无序或有序队列. 原理:按顺序比较每个元素,直到找到关键字为止. 时间复杂度:O(n) 二.二分查找(折半查找) 条件:有序数组 原理:查找过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束: 如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较. 如果在某一步骤数组为空,则代表找不到. 这种搜索算法每一次比较都使搜索范围缩小一半. 时间复杂度:O(logn) 三.哈希表(散列表) 条件:先创建…
Java基础知识强化之集合框架笔记76:ConcurrentHashMap之 ConcurrentHashMap简介
1. ConcurrentHashMap简介: ConcurrentHashMap是一个线程安全的Hash Table,它的主要功能是提供了一组和Hashtable功能相同但是线程安全的方法.ConcurrentHashMap可以做到读取数据不加锁,并且其内部的结构可以让其在进行写操作的时候能够将锁的粒度保持地尽量地小,不用对整个ConcurrentHashMap加锁(实际上就是对哈希表加锁). 2. ConcurrentHashMap的内部结构: ConcurrentHashMap为了提高本身…
Java基础知识强化60:经典查找之二分查找
1. 二分查找 二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好:其缺点是要求待查表为有序表,且插入删除困难.因此,折半查找方法适用于不经常变动而查找频繁的有序列表. 比较 基本查找 与 二分查找 ? (1)基本查找:数组元素无序(从头找到尾) (2)二分查找(折半查找):数组元素有序 2. 二分查找原理 (1)思想:每次都猜中间那个元素,比较大或者小,就能减少一半的元素. (2)原理图: 3. 二分查找的代码实现: package cn.itcast_04; /* *…
Java基础知识强化之多线程笔记01:多线程基础知识(详见Android(java)笔记61~76)
1. 基础知识: Android(java)学习笔记61:多线程程序的引入 ~ Android(java)学习笔记76:多线程-定时器概述和使用 …
Java基础常用类深度解析(包含常见排序算法)
目录 一.工具类 1.1.工具类的设计 1.1.1.公共静态方法 1.2.单例模式 二.包装类 2.1.基本类型的包装类 2.1.1.Integer 2.1.1.1.Integer >> int 2.1.1.2.int >> Integer 2.1.1.3.Integer >>String 2.1.1.4.String >> Integer 2.1.1.5.String >> int 2.1.1.6.int >> String 2.2…
Java基础知识强化之集合框架笔记61:Map集合之统计字符串中每个字符出现的次数的案例
1. 首先我们看看统计字符串中每个字符出现的次数的案例图解: 2. 代码实现: (1)需求 :"aababcabcdabcde",获取字符串中每一个字母出现的次数要求结果:a(5)b(4)c(3)d(2)e(1) 分析: A: 定义一个字符串(可以改进为键盘录入) B: 定义一个TreeMap集合 键: Character 值:Integer C: 把字符串转换为字符数组 D: 遍历字符数组,得到每一个字符 E: 拿刚才得…
Java基础知识强化56:经典排序之快速排序(QuickSort)
1. 快速排序的原理: 快速排序(Quicksort)是对冒泡排序的一种改进. 快速排序由C. A. R. Hoare在1962年提出.它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列. 方法其实很简单:分别从初始序列"6 1 2 7 9 3 4 5 10 8"两端开始"探测"…
Java基础知识强化54:经典排序之插入排序(InsertSort)
1. 插入排序原理图: 算法步骤: 1)将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列. 2)从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置.(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面. 2. 插入排序的代码实现: package cn.itcast; /* * 插入排序基本思想 * 将n个元素的数列分为已有序和无序两个部分,如插入排序过程示例下所示: * {{a1},{a2,a3,a4,…,an…
Java基础知识强化51:经典排序之桶排序(BucketSort)
1. 首先说明三点: (1)桶排序是稳定的 (2)桶排序是常见排序里最快的一种,比快排还要快…大多数情况下 (3)桶排序非常快,但是同时也非常耗空间,基本上是最耗空间的一种排序算法 2. 桶排序的分析过程: 对无序数组有个要求,就是成员隶属于固定(有限的)的区间,如范围为[0-9],考试分数为1-100等 例如待排数字[6,2,4,1,5,9] 准备10个空桶(桶数是固定区间中最大数,比如这里就是10) [6 2 4 1 5 9] 待排数组 [0 0 0 0 0 0…
Java基础知识强化之IO流笔记61:输入流 和 输出流 使用总结
1. 结构: 字节流:InputStream,OutputStream 字符流:Reader,Writer 2. 字符流 和 字节流: (1)Reader:读取字符流的抽象类 BufferedReader:将字符存入缓冲区,再读取 LineNumberReader:带行号的字符缓冲输入流 InputStreamReader:转换流,字节流和字符流的桥梁,多在编码的地方使用 FileReader:读取字符文件的便捷类. (2)Writer:写入字符流的抽象类 BufferedWriter:将字符存…