摘要: 哈希查找的思想是按照某种弄规则散列(分组) 创建哈希表,可以多次利用 哈希查找适用于多次查找,查找速度是最快的 散列我们一般用求整取余法 数组长度是几我们就对几取余,存到哈希表的对应数组下标里 但是可能会遇到哈希冲突,也就是数组里某一处已经有元素了,还要往里存 解决哈希冲突我们一般用两种方法 1.开 阅读全文
posted @ 2018-06-01 19:54 TheQi 阅读(421) 评论(0) 推荐(0) 编辑
摘要: 堆排序的核心是首先创建一个堆 分大根堆和小根堆 堆可以想象成一个完全二叉树 大根堆 每一个根节点的值都要大于它的任意的孩子 小根堆 每一个根节点的值都要小于它的任意的孩子 由于要经常交换节点,那么还要考虑交换后交换下来的节点和他孩子们大小的关系 我们可以把这个调整的过程封装成一个函数 代码如下 Ad 阅读全文
posted @ 2018-06-01 11:09 TheQi 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 归并排序的思想是将数组分成n个有序的数组 刚开始可以想象把数组分成length个数组,每个数组只有一个元素 那么他们一定是有序的 然后不停的将两个有序的数组进行合并,最后合并成完整的数组 代码如下 阅读全文
posted @ 2018-05-31 19:34 TheQi 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 希尔排序是对插入排序的一种优化 插入排序是每个元素依次插入有序数组中 如果比有序数组的最大值大就依次向前比较 而希尔排序则是将数组分组 首先确定一个增量,这里我取得增量是数组长度的一半 将数组元素中距离为增量的各个元素分成一组,进行插入排序 然后增量变成原来一半,重新分组,进行插入排序 直到增量变为 阅读全文
posted @ 2018-05-31 10:20 TheQi 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 他的思想是找到一个值,小的放在他的左面,大的放在他的右面。 这样左右两边都只需要在自己的范围内比较了 一般用递归来实现 快速排序和其他基于比较的排序方法来说 比较次数少 下面是没有优化的快排代码 其中Sort的代码如下: 利用的是挖坑填补法,把数组第一个参数的位置当做标准值 优化1 上面这种写法是两 阅读全文
posted @ 2018-05-30 00:47 TheQi 阅读(285) 评论(0) 推荐(0) 编辑
摘要: 1.堆区和栈区的区别 1.1 申请方式 堆区变量是由程序员自己申请并指明大小 栈区变量是由操作系统负责分配 1.2 生命周期 堆区变量程序员自己释放,或者等待程序结束系统自动回收(内存泄漏); 栈区变量是当申请栈区变量的大括号结束后系统自动回收 1.3 申请后系统的响应 栈:只要栈的剩余空间大于所申 阅读全文
posted @ 2018-05-29 15:59 TheQi 阅读(2994) 评论(0) 推荐(1) 编辑
摘要: 1 函数默认参数 2 For循环 阅读全文
posted @ 2018-05-29 14:48 TheQi 阅读(105) 评论(0) 推荐(0) 编辑
摘要: 二分查找针对的是一组有序的数组 找到数组的中间值,然后用你要查找的元素和中间值比较 比中间值大去中间值的右边,比中间值小去中间值的左边 代码是利用了数组的高低下标实现的 阅读全文
posted @ 2018-05-29 10:43 TheQi 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 两两相互比较,把大的放后面小的放前面,就是冒泡排序 冒泡排序有两处优化 1.当本轮排序没有元素交换位置,说明排序已经结束。 2.记录本轮最后一次交换位置的元素,因为这个位置后面的元素没有发生过交换,说明这个位置后面的元素都是有序的 阅读全文
posted @ 2018-05-29 10:27 TheQi 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 适用于数组元素范围确定 数组中尽量有重复元素的情况 原理为申请一个辅助数组,里面存放当前数组中元素的计数。 遍历原数组,相同元素计数++ 阅读全文
posted @ 2018-05-29 10:22 TheQi 阅读(159) 评论(0) 推荐(0) 编辑