- 浏览: 1661032 次
- 性别:
- 来自: 北京
-
文章分类
- 全部博客 (405)
- C/C++ (16)
- Linux (60)
- Algorithm (41)
- ACM (8)
- Ruby (39)
- Ruby on Rails (6)
- FP (2)
- Java SE (39)
- Java EE (6)
- Spring (11)
- Hibernate (1)
- Struts (1)
- Ajax (5)
- php (2)
- Data/Web Mining (20)
- Search Engine (19)
- NLP (2)
- Machine Learning (23)
- R (0)
- Database (10)
- Data Structure (6)
- Design Pattern (16)
- Hadoop (2)
- Browser (0)
- Firefox plugin/XPCOM (8)
- Eclise development (5)
- Architecture (1)
- Server (1)
- Cache (6)
- Code Generation (3)
- Open Source Tool (5)
- Develope Tools (5)
- 读书笔记 (7)
- 备忘 (4)
- 情感 (4)
- Others (20)
- python (0)
最新评论
-
532870393:
请问下,这本书是基于Hadoop1还是Hadoop2?
Hadoop in Action简单笔记(一) -
dongbiying:
不懂呀。。
十大常用数据结构 -
bing_it:
...
使用Spring MVC HandlerExceptionResolver处理异常 -
一别梦心:
按照上面的执行,文件确实是更新了,但是还是找不到kernel, ...
virtualbox 4.08安装虚机Ubuntu11.04增强功能失败解决方法 -
dsjt:
楼主spring 什么版本,我的3.1 ,xml中配置 < ...
使用Spring MVC HandlerExceptionResolver处理异常
3)分类和合并同时进行
典型事例 快速排序:(以整数类型为例)
快速排序的思想是,对于输入,按照以下二个步骤进行排序
对于数组a[p:r]
1)分解(其实包括合并过程):以a[p]为基准将数组分成三段a[p:q-1]、a[q]、a[q+1:r]使得a[p:q-1]中的任意元素都小于等于a[q],a[q+1:r]中的任意元素都大于等于a[q].
2)递归求解:通过递归调用快速排序,分别完成a[p:q-1]和a[q+1:r]的排序。
程序代码:
与QuickSort类似的例子是选择问题:
我们经常遇到的选择问题是选择最大元素和最小元素的问题,这个问题解决起来比较容易,而且时间复杂度为O(n),但是当我们把这个问题一般化的时候,既选择第k小(大)的元素的时候,思考一下,最容易想到的方法是排一下序,第k个 位置就是第k小的元素,在想一想可以找一些能够在每一次能够确定一个元素的最终位置的排序方法(如冒泡法,直接选择排序法等)只需要排好k(k<=n/2时)个的元素或者n-k(k>n/2),但是这样的话其实时间复杂性仍然是O(n^2),比找最大和最小所用的时间复杂度大的多。如果采用QuickSort算法其时间复杂度为O(nlogn),对于排序的确是个非常好的算法,但是我们想QuickSort是把所有的元素都排好的时间复杂度,我们找第k小的元素,从感性上也可以知道这是比排序要简单的问题,但是找第k小的元素,k本身就是个序号问题,如果不排序似乎解决不了这个问题。似乎有一个简单的情形会给我们以启发:我们在桌子上摆了一副扑克,我们规定了各个扑克的大小,现在是找第k小的元素,人或许很容易看出,但计算机似乎有点困难,那就找个就简单的方法吧---瞢,瞢当然不是瞎瞢,瞢错了你可以去掉一些不符和条件的扑克,例如瞢到了一张红桃k,现在好办了,把比红桃k小的扑克数一数,如果小于k-1,那好把红桃k和那些扑克仍在一边,如果等于k-1,恭喜你,瞢对了,否则,把其他的扑克和k仍在一边。对剩余的扑克继续重复上述过程(当然这是k应适当的变化一下)。其实我们发现上述过程如果不是运气特差的话,一次就能够扔掉不少扑克牌。
其算法如下:
//搜索第k小的元素
//上述的算法当然不是优化之后的算法,虽然这个算法最坏情况下仍然是O(n^2),但平均复杂度只是o(n),虽然改进后的的算法在最坏的情况下时间复杂度线性的T(n)<=72c1n,即nlog(10^72)这个算法显然在实际上已经没有什么应用的价值,只有理论价值,因为当数据的规模在比10^72这个数量大的时候,他的速度才会超过快速排序的最坏结果。下面是改进后的算法(线性搜索)的思路.考虑上面程序算法最坏的情况在什么时候发生?当每一次你选择的元素都离你要选择的基准元素相差最远的时候。改进算法就是为了不至于每次都遇到这么差的运气,所以他在选择分化基准元素的时候,他尽量选择大小在中间大小的元素,因为这样在平均的情况下效率挺高,一次就扔掉一半,在最坏的情况下也不会很坏。所以在partition之前要在n个元素中选择中间元素,这当然也是个很难简单就解决的问题,所以不一定真的是最中间的,大体上差不多就行了,因为这样远远比最中间的元素的时间复杂度小得多。算法的步骤如下:
1)将参加划分的n个元素分成[n/r]组(r>1),每组有r个元素,将n-r[n/r]的元素扔掉,然后对每一组的元素找出中间的元素,然后再从中间元素选择中间元素,这样的元素已经满足我们的要求了,虽然不一定是真正的中间元素。二次取中间值的方法复杂度是o(n)数量级的。其他的就和上面没改进的算法步骤一样了,不再详述。
分治法作为一种算法思想和前人总结的经验,关键是理解其算法的思想,不同的题难度不一,应具体问题具体分析。
典型事例 快速排序:(以整数类型为例)
快速排序的思想是,对于输入,按照以下二个步骤进行排序
对于数组a[p:r]
1)分解(其实包括合并过程):以a[p]为基准将数组分成三段a[p:q-1]、a[q]、a[q+1:r]使得a[p:q-1]中的任意元素都小于等于a[q],a[q+1:r]中的任意元素都大于等于a[q].
2)递归求解:通过递归调用快速排序,分别完成a[p:q-1]和a[q+1:r]的排序。
程序代码:
int partition(int a[],int p,int r) { int i=p,j=r+1,x=a[p],temp; while(true) { while(x>a[i]){++i;} while(x<a[j]){--j;} if(i>=j) break; temp=a[i]; a[i]=a[j]; a[j]=temp; } a[p]=a[j]; a[j]=x; return j; } void QuickSort(int a[],int p,int r) { if(p < r) { int q=partition(a,p,r); QuickSort(a,p,q-1); QuickSort(a,q+1,r); } }
与QuickSort类似的例子是选择问题:
我们经常遇到的选择问题是选择最大元素和最小元素的问题,这个问题解决起来比较容易,而且时间复杂度为O(n),但是当我们把这个问题一般化的时候,既选择第k小(大)的元素的时候,思考一下,最容易想到的方法是排一下序,第k个 位置就是第k小的元素,在想一想可以找一些能够在每一次能够确定一个元素的最终位置的排序方法(如冒泡法,直接选择排序法等)只需要排好k(k<=n/2时)个的元素或者n-k(k>n/2),但是这样的话其实时间复杂性仍然是O(n^2),比找最大和最小所用的时间复杂度大的多。如果采用QuickSort算法其时间复杂度为O(nlogn),对于排序的确是个非常好的算法,但是我们想QuickSort是把所有的元素都排好的时间复杂度,我们找第k小的元素,从感性上也可以知道这是比排序要简单的问题,但是找第k小的元素,k本身就是个序号问题,如果不排序似乎解决不了这个问题。似乎有一个简单的情形会给我们以启发:我们在桌子上摆了一副扑克,我们规定了各个扑克的大小,现在是找第k小的元素,人或许很容易看出,但计算机似乎有点困难,那就找个就简单的方法吧---瞢,瞢当然不是瞎瞢,瞢错了你可以去掉一些不符和条件的扑克,例如瞢到了一张红桃k,现在好办了,把比红桃k小的扑克数一数,如果小于k-1,那好把红桃k和那些扑克仍在一边,如果等于k-1,恭喜你,瞢对了,否则,把其他的扑克和k仍在一边。对剩余的扑克继续重复上述过程(当然这是k应适当的变化一下)。其实我们发现上述过程如果不是运气特差的话,一次就能够扔掉不少扑克牌。
其算法如下:
//搜索第k小的元素
int partition(int a[],int p,int r)//分化 { int i=p,j=r+1,x=a[p],temp; while(true) { while(x>a[i]){++i;} while(x<a[j]){--j;} if(i>=j) break; temp=a[i]; a[i]=a[j]; a[j]=temp; } a[p]=a[j]; a[j]=x; return j; } int SelectK(int a[],int p,int n,int k)//选择 { int q,i; q=partition(a,p,n); i=q-p+1; if(i<k) return SelectK(a,q+1,n,k-i); else if(i==k) return a[q]; else return SelectK(a,p,q-1,k); }
//上述的算法当然不是优化之后的算法,虽然这个算法最坏情况下仍然是O(n^2),但平均复杂度只是o(n),虽然改进后的的算法在最坏的情况下时间复杂度线性的T(n)<=72c1n,即nlog(10^72)这个算法显然在实际上已经没有什么应用的价值,只有理论价值,因为当数据的规模在比10^72这个数量大的时候,他的速度才会超过快速排序的最坏结果。下面是改进后的算法(线性搜索)的思路.考虑上面程序算法最坏的情况在什么时候发生?当每一次你选择的元素都离你要选择的基准元素相差最远的时候。改进算法就是为了不至于每次都遇到这么差的运气,所以他在选择分化基准元素的时候,他尽量选择大小在中间大小的元素,因为这样在平均的情况下效率挺高,一次就扔掉一半,在最坏的情况下也不会很坏。所以在partition之前要在n个元素中选择中间元素,这当然也是个很难简单就解决的问题,所以不一定真的是最中间的,大体上差不多就行了,因为这样远远比最中间的元素的时间复杂度小得多。算法的步骤如下:
1)将参加划分的n个元素分成[n/r]组(r>1),每组有r个元素,将n-r[n/r]的元素扔掉,然后对每一组的元素找出中间的元素,然后再从中间元素选择中间元素,这样的元素已经满足我们的要求了,虽然不一定是真正的中间元素。二次取中间值的方法复杂度是o(n)数量级的。其他的就和上面没改进的算法步骤一样了,不再详述。
分治法作为一种算法思想和前人总结的经验,关键是理解其算法的思想,不同的题难度不一,应具体问题具体分析。
发表评论
-
二分查找之变型题目
2010-10-24 12:40 2173二分查找算法在各个公司的笔试面试题大量出现,通常不是简单一眼就 ... -
一道笔试题(创新工厂)解法
2010-10-21 17:44 1875一个帖子http://www.iteye.com/topic/ ... -
[zz]大数据量,海量数据 处理方法总结
2010-08-27 22:24 2285大数据量的问题是很多面试笔试中经常出现的问题,比如baidu ... -
Trie and suffix array
2010-04-13 20:54 1943字典数Trie和后缀数组suffix array是处理字符串操 ... -
金币问题
2009-11-09 08:41 2049今年某公司的笔试题: 一个矩阵地图,每一个元素值代表金币数, ... -
楼梯问题
2009-11-09 08:19 1592hl给我的几道某公司的算法题: 1、 有个 100 级的 ... -
一道考察模拟乘法的题目
2009-11-07 22:37 1435今天hl和我讨论一道题目: 写道 整形数组如a={1,4, ... -
链表归并
2009-11-07 21:40 1051以前gx同学问的某某公司的笔试题,写一下练练(纯手写,没编译过 ... -
找出出现次数超过一半的数字
2009-11-07 21:23 1904hl同学问我一道这个题,想了一种方法,感觉还是不错的,只扫描一 ... -
有道难题以超低分晋级
2009-06-10 11:36 1590有道难题比赛居然晋级了,可以领到一个t-shirt。 -
逆序数/逆序数对
2009-06-09 23:17 3814逆序数是个常遇到的问题,主要有两种解法: O(n^2)的方法: ... -
有道难题topcoder
2009-05-31 23:55 2481今天做了有道topcoder的题目,也是第一次在topcode ... -
百度之星第一场题目
2009-05-31 00:03 3680由于不符合参赛条件,未能参加百度之星,看了题目还挺有意思,把题 ... -
一个对字符串很好的Hash函数ELFHHash
2009-05-03 21:41 2291#include<stdio.h> #defin ... -
最大流Ford-Fulkerson算法
2009-04-22 17:33 9721算法导论对最大流算法有很详细的介绍,今天实现了最大流Ford- ... -
大数/高精度加减乘除取模[收藏]
2009-04-16 19:38 5096#include <iostream> #i ... -
带重复数字的全排列
2009-04-16 18:58 3921上次gx同学问我一道又重复数字的全排列的问题,我当时用set保 ... -
差分约束系统
2009-04-15 16:00 3779(本文假设读者已经有以下知识:最短路径的基本性质、Bellma ... -
二分图匹配
2009-04-15 15:40 3743二分图最大匹配的匈牙利算法 二分图是这样一个图,它的顶点可以分 ... -
线段树
2009-03-24 10:58 1698把问题简化一下: 在自然数,且所有的数不大于30000的 ...
相关推荐
AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
kolesar_3cd_01_0716
latchman_01_0108
matlab程序代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
pimpinella_3cd_01_0716
petrilla_01_0308
AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
内容概要:本文档由张卓老师讲解,重点探讨DeepSeek的技术革新及强化学习对未来AI发展的重要性。文章回顾了AI的历史与发展阶段,详细解析Transformer架构在AI上半场所起到的作用,深入介绍了MoE混合专家以及MLA低秩注意机制等技术特点如何帮助DeepSeek在AI中场建立优势,并探讨了当前强化学习的挑战和边界。文档不仅提及AlphaGo和小游戏等成功案例来说明强化学习的强大力量,还提出了关于未来人工通用智能(AGI)的展望,特别是如何利用强化学习提升现有LLMs的能力和性能。 适用人群:本资料适宜对深度学习感兴趣的研究人员、开发者以及想要深入了解人工智能最新进展的专业人士。 使用场景及目标:通过了解最新的AI技术和前沿概念,在实际工作中能够运用更先进的工具和技术解决问题。同时为那些寻求职业转型或者学术深造的人提供了宝贵的参考。 其他说明:文中提到了许多具体的例子和技术细节,如DeepSeek的技术特色、RL的理论背景等等,有助于加深读者对于现代AI系统的理解和认识。
有师傅小程序开源版v2.4.14 新增报价短信奉告 优化部分细节
AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
商城二级三级分销系统(小程序+后台含源码).zip
li_3ck_01b_0918
nicholl_3cd_01_0516
媒体关注度是一个衡量公众对某个事件、话题或个体关注程度的重要指标。它主要反映了新闻媒体、社交媒体、博客等对于某一事件、话题或个体的报道和讨论程度。 媒体监督的J-F系数(Janis-Fadner系数)是一种用于测量媒体关注度的指标,特别是用于评估媒体对企业、事件或话题的监督力度。J-F系数基于媒体报道的正面和负面内容来计算,从而为公众、研究者或企业提供一个量化工具,以了解媒体对其关注的方向和强度。 本数据含原始数据、参考文献、代码do文件、最终结果。参考文献中JF系数计算公式。 指标 代码、年份、标题出现该公司的新闻总数、内容出现该公司的新闻总数、正面新闻数全部、中性新闻数全部、负面新闻数全部、正面新闻数原创、中性新闻数原创、负面新闻数原创,媒体监督JF系数。
AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
matlab程序代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
lusted_3cd_02_0716
pepeljugoski_01_0107