摘要: 斐波那契(黄金分割法)原理: 斐波那契查找原理与前两种查找(二分查找和插值查找)相似,仅仅改变了中间结点(mid)的位置,mid 不再是中间或插值得到,而是位于黄金分割点附近,即 mid=low+F(k-1)-1(F 代表斐波那契数列),如下图所示: 对 F(k-1)-1 的理解: 由斐波那契数列F 阅读全文
posted @ 2020-11-02 16:58 白刃天使 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 1)插值查找原理介绍: 插值查找算法类似于二分查找,不同的是插值查找每次从自适应 mid 处开始查找。2)将折半查找中的求 mid 索引的公式 : (low 表示左边索引 left, high 表示右边索引 right;key 就是前面我们讲的findVal) 3)int mid = low + ( 阅读全文
posted @ 2020-11-02 16:53 白刃天使 阅读(222) 评论(0) 推荐(0) 编辑
摘要: 线性查找 从第一个遍历判断到最后一个,查找到全部符合条件的值。(遍历数组找到就返回下标值(如果有多个可先存储)) 1. public class seqsearch { 2. public static void main(String[] args) { 3. int[] arr = {45, 2 阅读全文
posted @ 2020-11-02 16:41 白刃天使 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 堆排序基本介绍 1) 堆排序是利用堆(heap)这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为 O(nlogn),它也是不稳定排序。 堆排序的基本思想是: 1. 将待排序序列构造成一个大(小)顶堆 2. 此时,整个序列的最大(小)值就是堆顶的根节点。 3. 阅读全文
posted @ 2020-11-02 16:28 白刃天使 阅读(449) 评论(0) 推荐(0) 编辑
摘要: 基数排序(桶排序的一种)介绍 1)基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或 bin sort,顾名思义,它是通过键值的各个位的值,将要排序的元素分配至某些“桶”中,达到排序的作用2)基数排序法是属于稳定性的排 阅读全文
posted @ 2020-11-02 16:12 白刃天使 阅读(365) 评论(0) 推荐(0) 编辑
摘要: 归并排序介绍 归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer) 策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。 归并排序思想 阅读全文
posted @ 2020-11-02 15:57 白刃天使 阅读(103) 评论(0) 推荐(0) 编辑
摘要: 快速排序法介绍 快速排序(Quicksort)是对冒泡排序的一种改进。 基本思想是: 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列 快速排序法示意 阅读全文
posted @ 2020-11-02 15:43 白刃天使 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 引入:简单插入排序存在的问题 插入排序可能存在的问题是数组 arr = {2,3,4,5,6,1} 这时需要插入的数 1(最小), 这样的过程是: {2,3,4,5,6,6} {2,3,4,5,5,6} {2,3,4,4,5,6} {2,3,3,4,5,6} {2,2,3,4,5,6} {1,2,3 阅读全文
posted @ 2020-11-02 15:18 白刃天使 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 插入排序法介绍 插入排序属于内部排序法,是对于欲排序的元素以插入的方式找寻该元素的适当位置,以达到排序的目的。 插入排序法思想 把 n 个待排序的元素看成为一个有序表和一个无序表, 一开始时有序表中只包含一个元素(arr[0]),无序表中包含有 n-1 个元素(arr[1]~arr[n]) 排序过程 阅读全文
posted @ 2020-11-02 15:03 白刃天使 阅读(462) 评论(0) 推荐(0) 编辑
摘要: 基本介绍 选择式排序也属于内部排序法,是从欲排序的数据中,按指定的规则选出某一元素,再依规定交换位置后达到排序的目的。 选择排序思想 第一次从 arr[0]~arr[n-1]中选取最小值, 与 arr[0]交换, 第二次从 arr[1]~arr[n-1]中选取最小值,与 arr[1]交换, 第三次从 阅读全文
posted @ 2020-11-02 14:50 白刃天使 阅读(117) 评论(0) 推荐(0) 编辑
摘要: 冒泡排序(Bubble Sorting)的基本思想 通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就像水底下的气泡一样逐渐向上冒。图解: 小结: (1) 一共进行(数组的大小-1)次大的循环 (2)每一趟排序的次数在逐渐的减 阅读全文
posted @ 2020-11-02 14:44 白刃天使 阅读(96) 评论(0) 推荐(0) 编辑
摘要: 排序的分类 1) 内部排序: 指将需要处理的所有数据都加载到内部存储器(内存)中进行排序。 2) 外部排序法:数据量过大,无法全部加载到内存中,需要借助外部存储进行排序。 3) 常见的排序算法分类: 算法的时间复杂度 度量一个程序(算法)执行时间的两种方法 1) 事后统计的方法 这种方法可行, 但是 阅读全文
posted @ 2020-11-02 14:33 白刃天使 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 递归需要遵守的重要规则 1) 执行一个方法时,就创建一个新的受保护的独立空间(栈空间)2) 方法的局部变量是独立的,不会相互影响, 比如n变量3) 如果方法中使用的是引用类型变量(比如数组),就会共享该引用类型的数据.4) 递归必须向退出递归的条件逼近,否则就是无限递归,出现StackOverflo 阅读全文
posted @ 2020-11-02 14:18 白刃天使 阅读(208) 评论(0) 推荐(0) 编辑