九大经典算法之冒泡排序、快速排序

每次选择两个元素,按照需求进行交换(比如需要升序排列的话,把较大的元素放在靠后一些的位置),循环n次(n为总元素个数),这样小的元素会不断“冒泡”到前面来。普通版voidbubbleSort(intarr[],intn){//标准版for(inti=0;i<n-1;i++){for(intj=0;j<n-1-i;j++){if(arr[j]>arr[j+1]){arr[j]+=arr[j+1];arr[j+1]=arr[j]-arr[j+1];arr[j]-=arr[j+1];}}}}进阶版voidbubbleSort(intarr[],intn){boolswapp=true;while(swapp){swapp=false;for(inti=0;i<n-1;i++){//这里的n要减1if(arr[i]>arr[i+1]){arr[i]+=a[i+1];arr[i+1]=arr[i]-arr[i+1];arr[i]-=a[i+1];swapp=true;}}}}空间效率:O(1)时间效率:最好情况:O(n)  ...

九大经典算法之插入排序、希尔排序

原理:每次选择一个元素,并且将这个元素和整个数组中的所有元素进行比较,然后插入到合适的位置。voidinsertion_sort(intarr[],intn){inti,j;for(i=1;i<n;i++){inttmp=arr[i];for(j=i;j>0&&arr[j-1]>tmp;j--){arr[j]=arr[j-1];}arr[j]=tmp;}}空间效率:O(1)时间效率:最好情况:O(n)       平均情况:O(N^2)             最坏情况:O(N^2)稳定性(相同元素相对位置变化情况):稳定适用性:顺序存储的线性表注:还有个折半插入排序,其原理就是查找插入位置时,从中间开始找起。这个是插入排序的修改版,根据步长由长到短分组,进行排序,直到步长为1为止,属于插入排序的一种。//希尔排序-希尔增量voidshell_sort(i...

标签传递算法

标签传递算法1.对于部分样本的标记给定,而大多数样本的标记未知的情形,是半监督学习问题,应用场景电影评论2.标签传递算法将标记样本的标记通过一定的概率传递给未知标记样本,知道最终收敛....
代码星球 代码星球·2020-04-08

这十种算法撑起了整个世界

  http://mp.weixin.qq.com/s?__biz=MzA3NTU2NDY0Ng==&mid=403015182&idx=1&sn=d74a8a5c21d293157827c058d933de67&scene=5&srcid=0119gF82WwCFY2jz7GuMSRWb#rd...

关联规则之Aprior算法(购物篮分析)

0.支持度与置信度《mahout实战》与《机器学习实战》一起该买的记录数占所有商品记录总数的比例——支持度(整体)买了《mahout实战》与《机器学习实战》一起该买的记录数占所有购买《mahout实战》记录数的比例——置信度(局部)支持度、置信度越大,商品出现一起购买的次数就越多,可信度就越大。支持度:在所有的商品记录中有2%量是购买《mahout实战》与《机器学习实战》置信度:买《mahout实战》的顾客中有60%的顾客购买了《机器学习实战》1.啤酒与尿布如何寻找?在历史购物记录中,一些商品总是在一起购买。但人看上去不是那么的直观的,而是隐蔽的。让计算机做这事,设计算法让计算机自动去找,找到这样的模式(规律)。目标:寻找那些总是一起出现商品。mahout实战—>机器学习实战《mahout实战》与《机器学习实战》一起该买的记录数占所有商品记录总数的比例——支持度(整体)买了《mahout实战》与《机器学习实战》一起该买的记录数占所有购买《mahout实战》记录数的比例——置...

3.算法-二叉树遍历

2015-10-04周日9:301....
代码星球 代码星球·2020-04-08

2算法-二分查找

独孤九剑:总诀式:心法总纲1.破剑式2.破刀式3.破枪式4.破索式5.破掌式6.破箭式7.破气式   1.二分查找的时间复杂度是O(logn)1.算法面试中如果需要优化O(n)的时间复杂度,那么只能是O(logn)的二分法2.Recursionorwhile–loop?如果问题不复杂,能用递归就用递归。如果问题比较复杂,那就用递归。3.避免死循环,条件start+1<end4.指针变化start=mid2.四要素:1.start+1<end2.start+(end–start)/2(这样写的好处可以避免start,end过大造成超出系统最大值)3.A[mid]==,<,>4.A[start] A[end]?target3.题型分类第一个位置还是最后一个位置或任何一个位置4.各种题目变形4.1搜索区间给定一个包含n个整数的排序数组,找出给定目标值target的起始和结束位置。如果目标值不在数组中,则返回[-1,-1]样例给出[5,7,7,8,8,10]和目标值target=8,返回[3,4]  4.2.搜...
代码星球 代码星球·2020-04-08

九章讨论算法(备用)

1.检测邮箱validehttp://www.cplusplus.com/forum/general/65108/2.检测手机号validehttps://leetcode.com/problems/valid-phone-numbers/...
代码星球 代码星球·2020-04-08

机器学习算法一般步骤

各位工程师累了吗?推荐一篇可以让你技术能力达到出神入化的网站["宅男门诊"](https://zhainanmenzhen.com/)1、使用机器学习来解决问题,我们用数学语言来描述它,然后建立一个模型,例如回归模型或者分类模型等来描述这个问题;2、通过最小化误差、最大似然、最大后验概率等等建立模型的代价函数,转化为最优化问题。找到最优化问题的解,也就是能拟合我们的数据的最好的模型参数;3、求解这个代价函数,找到最优解。求最优解方法:1、如果优化函数存在解析解。例如我们求最值一般是对优化函数求导,找到导数为0的点。如果代价函数能简单求导,并且求导后为0的式子存在解析解,那么我们就可以直接得到最优的参数。2、如果式子很难求导,例如函数里面存在隐含的变量或者变量相互间存在耦合,互相依赖的情况。或者求导后式子得不到解释解,或者未知参数的个数大于方程组的个数等。这时候使用迭代算法来一步一步找到最优解。特别的若优化函数是凸函数,那么就存在全局最优解,如果函数是非凸的,那么就会有很多局部最优的解,因此凸优化重要性不言而喻。人们总希望在万千事物中找到最优的那个他。1.什么是机器学习计算机自动从数据中...

决策树-预测隐形眼镜类型 (ID3算法,C4.5算法,CART算法,GINI指数,剪枝,随机森林)

1.1、问题的引入2、一个实例3、基本概念4、ID35、C4.56、CART7、随机森林2.我们应该设计什么的算法,使得计算机对贷款申请人员的申请信息自动进行分类,以决定能否贷款?  一个女孩的母亲要给这个女孩介绍男朋友,于是有了下面的对话:女儿:多大年纪了?母亲:26。女儿:长的帅不帅?母亲:挺帅的。女儿:收入高不?母亲:不算很高,中等情况。女儿:是公务员不?母亲:是,在税务局上班呢。女儿:那好,我去见见。决策过程: 这个女孩的决策过程就是典型的分类树决策。相当于通过年龄、长相、收入和是否公务员对将男人分为两个类别:见和不见3.定义:决策树是一种描述对样本实例(男人)进行分类(见或不见)的树形结构。决策树由结点和有向边组成。最上部是根节点,此时所有样本都在一起,经过该节点后样本被划分到各子节点中。每个子节点再用新的特征来进一步决策,直到最后的叶节点。叶节点上只包含单纯一类样本(见或不见),不需要在进行划分。结点两种类型:内部结点和叶结点。内部结点表示一个特征或属性,叶节点表示一个类。4.熵特征选择首先,我们该选择什么标准(属性、特征)作为我们的首要条件(...

【Java】将List中的实体按照某个字段进行分组的算法

publicvoidtest(){List<User>list=newArrayList<>();//User实体测试用Stringid,name;//当前测试以id来分组,具体请按开发场景修改list.add(newUser("1","1"));list.add(newUser("1","2"));list.add(newUser("2","2"));list.add(newUser("2","3"));list.add(newUser("2","4"));list.add(newUser("3","3"));//初始化一个mapMap<String,List<User>>map=newHashMap<>();for(Useruser:list){Stringkey=user.getId();if(map.containsKey(key)){//map中存在以此id作为的key,将数据存放当前key的map中map.get(key).add(user);}else{//map中不存在以此id作为的key,新建key用来存放数...

(独孤九剑)--数组与数据结构

【一】数组(1)数组属于复合数据类型,可以存入多个不同类型的数据(2)数组定义:    ①$array=array();//5.4版本前的定义方式    ②$array=[];(3)数组函数的使用(4)分类:数字型索引数组、关联型索引数组 【二】数组的定义array()和array[]用来定义数组(1)数字型索引数组<?php$array=['one','two',1,"我稍后"];echo"<pre>";var_dump($array);echo"</pre>";?>代码解析:<pre></pre>可以原样输出,格式化展示输出结果[0]=>string(3)"one"里的=>为键值对应符(2)关联型索引数组$array=array("one"=>"1","two"=>"2","three"=>"3");数组索引下标不一定非得从0开始;也依次递增,可跳跃,例如<?php$array=array(2=&g...

【算法系列】之递归算法

1  概述 本篇文章主要分享算法部分——递归算法,本文简要讲解几个经典的递归算个发,即乘法阶乘、汉诺塔和斐波那契数列。2 讲解部分2.1 乘法阶乘问题:求n!分析:0!=1;n!=nx(n-1)!code:1usingSystem;2usingSystem.Collections.Generic;3usingSystem.Linq;4usingSystem.Text;5usingSystem.Threading.Tasks;67namespaceConseDemo8{9classProgram10{11staticvoidMain(string[]args)12{13stringinputParm=Console.ReadLine();//从控制台输入参数14intn=Int32.Parse(inputParm);15Console.WriteLine(JieChengRecursive(n));16Console.Read();17}1819///<summary>20///求n!21///<...
代码星球 代码星球·2020-04-08

php算法递归排序

<?phpfunctionquickSort($arr){if(count($arr)>1){$k=$arr[0];$x=array();$y=array();$_size=count($arr);for($i=1;$i<$_size;$i++){if($arr[$i]<=$k){$x[]=$arr[$i];//小的放这边}else{$y[]=$arr[$i];//大的放这边。这样子是从小到大排序,如果想从大到小返回,那么调换位置与$x[]=$arr[$i];的位置即可}}//得到分割看来左右两边的数据$x=quickSort($x);//左边的数据,对这些数据再次使用分割法排序,返回的结果就是排序后的数据$y=quickSort($y);//右边的数returnarray_merge($x,array($k),$y);}else{return$arr;}}print_r(quickSort([6,8,9,2,4,5])); ...
代码星球 代码星球·2020-04-08
首页上一页...110111112113114...下一页尾页