随笔分类 -  算法

摘要:1 阅读全文
posted @ 2020-11-22 10:39 guoyu1 阅读(60) 评论(0) 推荐(0) 编辑
摘要:如果要经常判断 1 个元素是否存在,你会怎么做?很容易想到使用哈希表(HashSet、HashMap),将元素作为 key 去查找,时间复杂度:O(1),但是空间利用率不高,需要占用比较多的内存资源。 如果需要编写一个网络爬虫去爬10亿个网站数据,为了避免爬到重复的网站,如何判断某个网站是否爬过?很 阅读全文
posted @ 2020-11-05 22:37 guoyu1 阅读(67) 评论(0) 推荐(0) 编辑
摘要:一、递归定义: 1、递归: 函数(方法)直接或间接调用自身。是一种常用的编程技巧 假设A在一个电影院,想知道自己坐在哪一排,但是前面人很多, A 懒得数,于是问前一排的人 B【你坐在哪一排?】,只要把 B 的答案加一,就是 A 的排数。 B 懒得数,于是问前一排的人 C【你坐在哪一排?】,只要把 C 阅读全文
posted @ 2020-07-23 19:37 guoyu1 阅读(154) 评论(0) 推荐(0) 编辑
摘要:1、归并排序思想: 归并排序的思想源于一个简单的思想,就是如果现在存在两个已经排好序的数组了,例如:{2, 3, 6, 8, 11},{1, 5, 7, 9},那么对这两个排序好的数组进行合并排序,就比较简单了,只需要创建一个临时的辅助数组,然后比较两个数组的头元素,2比1,那就将1先存入辅助数组, 阅读全文
posted @ 2020-01-09 17:10 guoyu1 阅读(172) 评论(0) 推荐(0) 编辑
摘要:主要针对的是“有序数组”中查找某个特定元素。 1、二分查找的思想:主要针对的是有序数组,要充分利用数组有序的特性,要是遍历查找,时间复杂度是O(n),就浪费了数组的有序性。其思想就是,每次查找对比的元素都是数组的中间元素,通过比较中间元素和目标元素的大小,进一步的缩小范围,每次比较的范围都缩小为原来 阅读全文
posted @ 2019-12-18 10:11 guoyu1 阅读(234) 评论(0) 推荐(0) 编辑
摘要:1、选择排序思想:每次遍历数组,找到数组的最小值,放到对应位置。即,一次排序确定一个元素的位置,直至所有元素位置确定为止。 2、代码如下 public void selectionSort(int[] arr) { //外层循环控制排序次数 for (int i = 0; i < arr.lengt 阅读全文
posted @ 2019-11-18 10:34 guoyu1 阅读(122) 评论(0) 推荐(0) 编辑
摘要:1、排序思想:冒泡排序主要利用的是从头开始两两元素相比,大的沉底。 例如:排序过程如下 2,5,3,1,7,6 2,3,1,5,6,7 一次排序,7排好了位置 2,1,3,5,6,7 二次排序,6排好了位置 。。。 每次排序都可以确定一个元素的位置,一个一个大的元素沉底 2、代码如下 //升序 pu 阅读全文
posted @ 2019-11-18 09:42 guoyu1 阅读(158) 评论(0) 推荐(0) 编辑
摘要:1、快速排序思想: 快速排序主要利用分治和递归的思想,例如,将一个数组{2,5,10,1,0,7}排序。首先选取其第一个元素2作为基准,将<2的元素移动到其左边,将>=2的元素移动到其右边(其中等于2放左放右都可以),此过程称为一次分区,可以得到{0,1,2,10,5,7}。经过一次分区后,数组就分 阅读全文
posted @ 2019-11-16 14:35 guoyu1 阅读(243) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示