
编程之算法
fly_Xiaoma
技术分享,技术学习
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
5分钟搞定快速排序
1、原理首先找到数组中的一个基准值(通常是中间值); 遍历数组,如果比基准值小就放到左边,比基准值大放到右边; 以基准值左右两边的子列作为新数列,不断重复第一步和第二步(迭代法);2、实现def quick_sort(arr): if len(arr) <2 :return arr mid =arr[len(arr) // 2] # 基准值 left,right=[],[] # 定义左右两个子列 arr.pop(le原创 2020-12-18 21:23:11 · 223 阅读 · 2 评论 -
推荐系统算法面试题2
15、Bias和Variance的区别Bias度量了学习算法的期望预测与真实结果的偏离程度,即刻画了算法本身的拟合能力。Variance度量了同样大小的训练集的变动所导致的学习性能变化,即刻画了数据扰动所造成的影响。16、对于支持向量机,高斯核一般比线性核有更好的精度,但实际应用中为什么一般用线性核而不用高斯核?如果训练的样本的量很大,训练得到的模型中支持向量的数量太多,在每次做预...原创 2019-05-08 22:11:07 · 6637 阅读 · 0 评论 -
推荐系统算法面试题1
对推荐系统面试经常问到的一些基础问题进行总结,方便自己记忆。1、模型产生过拟合的原因及解决方案什么是过拟合:模型在训练集上效果较好,在测试集上表现较差。产生过拟合原因:参数太多,模型复杂度高 样本中噪音数据较大,模型学习到了噪音中的特征 对于决策树模型。对决策树的生长没有合理的限制和修建 对于神经网络模型。权值学习迭代次数足够多(overtraining),拟合了训练数据...原创 2019-05-08 13:26:30 · 15963 阅读 · 0 评论 -
新词获取问题
基于每日用户搜索内容,假设只有少量已知商品的情况下,如何根据用户搜索内容获取平均平台内没有的新商品?答案:这是一条类似于分词“新词获取问题”,答案是基于信息熵+聚合度。需要考虑先做stop库,先去除形容词等。1、信息熵比如用户搜索“曲面屏 白色”,假设商品库中没有显示屏这个商品,我们需要判断“显示屏”是否是潜在的商品,需要考虑“显示屏”左词、右词出现的可能。也就是说如果大...原创 2019-05-08 10:38:49 · 236 阅读 · 0 评论 -
Algorithm_interview_01
1、题目描述:给定一列非负整数,求这些数连接起来能组成的最大的数。输入描述:第一行n>0是一个正整数,表示一共有n个输入。以后每行是一个非负整数,共有n行。输出描述:n个输入的非负整数连接成的最大数示例1:输入69876543输出9876543示例2:输入2112输出211实现代码:n=int(input(...原创 2019-03-20 21:55:34 · 172 阅读 · 0 评论 -
算法之“堆排序”
在了解之前先看一下如何判断一个序列为堆序列。一、对堆的理解堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序;它的最好、最坏、平均时间复杂度均为O(nlogn),它是不稳定排序。参考:如何判断一个序列为堆(堆与完全二叉树的关系)有的文章称大根堆与小根堆,我这里成为最大堆和最小堆。二、堆排序例如一个数组中的数据为{2,5,7,3,9} ...原创 2018-12-20 20:17:43 · 541 阅读 · 0 评论 -
算法之"统计一篇文章里不同单词的个数"
输入:有多组数据,每组一行,每行就是一篇文章。每篇小文章由小写字母和空格组成,没有标点符号,遇到#时表示输入结束。输出:每组输入一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。例如:hello world hello hi haha hh you are greatnice of you#输出为:每一行单词个数为:533代码...原创 2018-10-30 22:09:19 · 2852 阅读 · 0 评论 -
算法之“try-catch-finally-看程序写结果”
代码:public calss Test{ public static void main(String[] args){ try{ test(new int[]{0,1,2,3,4,5,6}); }catch(Exception e){ System.out.print("c"); } ...原创 2018-10-30 21:22:43 · 272 阅读 · 0 评论 -
算法之“统计字符串中单词的个数”
如,给定String,求此字符串的单词数量。字符串不包括标点,大写字母。例如String str="hello world hello hi";,单词数量为3,分别是:hello world hello hi 。public static void main(String[] args){ int count=0; String str="hello world hello ...原创 2018-10-30 20:56:15 · 1982 阅读 · 1 评论 -
Java中分割字符串split()的用法小结
用"."做分隔符,必须是如下写法String.split("\\."),不能是String.split(".");用"|"做分隔符,必须是如下的写法String.split("\\|"),不能是String.split("|");如果在一个字符串中有多个分隔符,可以用"|"作为连接符,如"count=?and m=? or n=?"把原创 2018-10-30 20:44:48 · 2649 阅读 · 2 评论 -
算法之"数组排序”
问:一个整数数组如arr={2,3,5,8,0,4,2,4,5,1},如何将奇数排在前列,同时将偶数排在后列,不考虑偶数或奇数中的大小顺序?思路:新建一个数组arr2,分别取出原数组中的元素,将偶数从数组arr2前列插入,奇数从数组arr2后列插入。代码如下:public class ReOrder{ public static void main(String[] args...原创 2018-10-30 10:56:12 · 134 阅读 · 0 评论 -
算法之“快速排序”
快速排序,是一种速度快,效率高的排序算法。思路: 在要排的数组(比如数组A)中选择一个中心值(如A[0]),通过一趟排序将数组A划分成两部分,其中以Key(一般是数组的中心位置数据)为中心,假设要排的数组按照从小到大排序,key右边都比key大,key左边都比key小,然后对这两部分分别重复这个过程,直到整个有序。 整个快排的过程就简化为了一趟排序的过程,然后调...原创 2018-10-31 17:14:58 · 163 阅读 · 1 评论 -
算法之"冒泡排序"
冒泡排序算是比较经典的算法之一。原理:每次比较相邻的两个数字,将值较大的那个交换值右端。思路:依次比较相邻的两个数,将小数放到前面,大数放到后面。第一趟比较可以确定,最后一个数,一定是最大的那个。第二趟比较,倒数第二个数,是次最大的那个数。依次类推。因此,可以采用双层循环,第一层控制循N-1趟排序,第二层控制每次排序N-i次。(外层控制循环多少趟,内层控制每一趟的循环次数)示例代码...原创 2018-10-28 22:16:08 · 180 阅读 · 0 评论