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