摘要: 哈希表是数组+链表的集合 重点是理解由链表组成的数组和散列函数(取模法) 阅读全文
posted @ 2020-10-31 11:07 这总没有了吧 阅读(27) 评论(0) 推荐(0) 编辑
摘要: 查找的算法主要有几种:二分查找,插入查找,斐波那契查找。注:所有的查找算法都是在有序数组中 二分查找:顾名思义,先从中间值开始查找,然后不断逼近,类似高中的二分法 二分查找完整代码如下: public static int BinarySearch(int[] arr, int left, int 阅读全文
posted @ 2020-10-28 21:21 这总没有了吧 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 基数排序的本质是比相应位数上的值,如果位数不足则用0补齐的一个排序算法,该算法时间复杂度很低,但空间复杂度很高,是典型的空间换时间算法 完整代码如下: public static void radixSort(int[] arr) { int max = arr[0];//假设第一个为最大值 //f 阅读全文
posted @ 2020-10-28 18:19 这总没有了吧 阅读(52) 评论(0) 推荐(0) 编辑
摘要: 归并排序是冒泡排序的优化算法,它采用了分治法的思想,使用递归将其解决,以数组{0,3,2,9,6}为例 分治法的基本思想:将一个大问题分割成若干个类似的小问题,解决完小问题后再将小问题组合大问题 分:用递归法 取mid=(left+right)/2 先递归左子表再递归右子表 当left>=right 阅读全文
posted @ 2020-10-27 20:39 这总没有了吧 阅读(69) 评论(0) 推荐(0) 编辑
摘要: 快速排序是冒泡排序的优化算法,其步骤是: 1、找到一个基准数p(选中间随机数可以避免快速排序最坏情况) 2、设置左右两个指针,然后左指针l往右找比基准数大的(或相等)的数,右指针r往左找比基准数小的(或相等)的数,两个指针交换 所在位置的元素后,继续搜索直到左右指针相遇(即跳出循环条件 l=r) 注 阅读全文
posted @ 2020-10-26 09:44 这总没有了吧 阅读(31) 评论(0) 推荐(0) 编辑