2024年10月排序算法演示系统的设计实现(php几种排序算法实例详解)

 更新时间:2024-10-12

  ⑴排序算法演示系统的设计实现(php几种排序算法实例详解

  ⑵php几种排序算法实例详解

  ⑶四种排序算法的PHP实现:)?插入排序(Insertion?Sort)的基本思想是:?每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中的适当位置,直到全部记录插入完成为止。)?选择排序(Selection?Sort)的基本思想是:?每一趟从待排序的记录中选出关键字最小的记录,顺序放在已排好序的子文件的最后,直到全部记录排序完毕。)?冒泡排序的基本思想是:?两两比较待排序记录的关键字,发现两个记录的次序相反时即进行交换,直到没有反序的记录为止。)?快速排序实质上和冒泡排序一样,都是属于交换排序的一种应用。所以基本思想和上面的冒泡排序是一样的。.?sort.php文件如下:?《?phpclass?Sort?{??private?$arr??=?array();???private?$sort??=?’insert’;??private?$marker?=?’_sort’;??private?$debug?=?TRUE;??/**???*?构造函数???*???*?param??array??例如:???$config?=?array?(???’arr’?=》?array(,,,)?,?//需要排序的数组值???’sort’?=》?’insert’,?//可能值:?insert,?select,?bubble,?quick???’debug’?=》?TRUE?//可能值:?TRUE,?FALSE???)???*/??public?function?construct($config?=?array())?{????if?(?count($config)?》?)?{??????$this-》_init($config);????}??}??/**???*?获取排序结果???*/??public?function?display()?{????return?$this-》arr;??}??/**???*?初始化???*???*?param??array???*?return?bool???*/??private?function?_init($config?=?array())?{????//参数判断????if?(?!is_array($config)?OR?count($config)?==?)?{??????if?($this-》debug?===?TRUE)?{????????$this-》_log(“sort_init_param_invaild“);??????}??????return?FALSE;????}????//初始化成员变量????foreach?($config?as?$key?=》?$val)?{??????if?(?isset($this-》$key))?{????????$this-》$key?=?$val;??????}????}????//调用相应的成员方法完成排序????$method?=?$this-》sort?.?$this-》marker;????if?(?!?method_exists($this,?$method))?{??????if?($this-》debug?===?TRUE)?{????????$this-》_log(“sort_method_invaild“);??????}??????return?FALSE;????}????if?(?FALSE?===?($this-》arr?=?$this-》$method($this-》arr)))??????return?FALSE;????return?TRUE;??}??/**???*?插入排序???*????*?param??array???*?return?bool???*/??private?function?insert_sort($arr)?{????//参数判断????if?(?!?is_array($arr)?OR?count($arr)?==?)?{??????if?($this-》debug?===?TRUE)?{????????$this-》_log(“sort_array(insert)_invaild“);??????}??????return?FALSE;????}????//具体实现????$count?=?count($arr);????for?($i?=?;?$i?《?$count;?$i++)?{??????$tmp?=?$arr;??????for($j?=?$i-;?$j?》=?;?$j--)?{?????????if($arr?》?$tmp)?{??????????$arr;??????????$arr?=?$tmp;????????}??????}????}????return?$arr;??}??/**???*?选择排序???*????*?param??array???*?return?bool???*/??private?function?select_sort($arr)?{????//参数判断????if?(?!?is_array($arr)?OR?count($arr)?==?)?{??????if?($this-》debug?===?TRUE)?{????????$this-》_log(“sort_array(select)_invaild“);??????}??????return?FALSE;????}????//具体实现????$count?=?count($arr);????for?($i?=?;?$i?《?$count-;?$i++)?{??????$min?=?$i;??????for?($j?=?$i+;?$j?《?$count;?$j++)?{????????if?($arr)?$min?=?$j;??????}??????if?($min?!=?$i)?{????????$tmp?=?$arr;????????$arr;????????$arr?=?$tmp;??????}????}????return?$arr;??}??/**???*?冒泡排序???*????*?param??array???*?return?bool???*/??private?function?bubble_sort($arr)?{????//参数判断????if?(?!?is_array($arr)?OR?count($arr)?==?)?{??????if?($this-》debug?===?TRUE)?{????????$this-》_log(“sort_array(bubble)_invaild“);??????}??????return?FALSE;????}????//具体实现????$count?=?count($arr);????for?($i?=?;?$i?《?$count;?$i++)?{??????for?($j?=?$count-;?$j?》?$i;?$j--)?{????????if?($arr)?{??????????$tmp?=?$arr;??????????$arr;??????????$arr?=?$tmp;????????}??????}????}????return?$arr;????}??/**???*?快速排序???*?by?($arr)?{????//具体实现????if?(count($arr)?《=?)?return?$arr;?????$key?=?$arr;????$left_arr?=?array();????$right_arr?=?array();????for?($i?=?;?$i?《?count($arr);?$i++){??????if?($arr?《=?$key)????????$left_arr;??????else????????$right_arr;????}????$left_arr?=?$this-》quick_sort($left_arr);????$right_arr?=?$this-》quick_sort($right_arr);???????return?array_merge($left_arr,?array($key),?$right_arr);??}??/**???*?日志记录???*/??private?function?_log($msg)?{????$msg?=?’date?’?.?$msg?.?’

  ⑷’;????return?file_put_contents(’sort_err.log’,?$msg,?FILE_APPEND);??}}/*End?of?file?sort.php*//*Location?htdocs/sort.php?*/.?sort_demo.php文件如下:?《?phprequire_once(’sort.php’);$config?=?array?(??’arr’?=》?array(,?,?,?,?,?,?,,)?,??//需要排序的数组值??’sort’?=》?’select’,??//可能值:?insert,?select,?bubble,?quick??’debug’?=》?TRUE??//可能值:?TRUE,?FALSE);$sort?=?new?Sort($config);//var_dump($config);var_dump($sort-》display());/*End?of?php*/

  ⑸设计一个程序将{,,,-,,,,-,,-}按从小到大的顺序

  ⑹这里介绍一种简单的排序算法——冒泡排序。其基本思想是:比较相邻的两个元素,如果前一个元素比后一个元素大,就交换这两个元素。这样一趟下来,最大的元素就会“冒泡”到数组的末尾,然后再针对剩下的元素进行同样的操作,直到整个数组有序为止。下面是使用冒泡排序实现将给定数组按从小到大的顺序排序的示例代码(Python实现:lessCopycodearray=print(array)输出结果为:cssCopycode可以看到,经过冒泡排序后,给定的数组已经按从小到大的顺序排序好了。

  ⑺c语言做各种排序算法比较程序怎么做

  ⑻按照程序设计的自顶向下,逐步求精的机构化程序设计思想来完成这个任务。①大概的顶层框架是:随机数产生模块,文件保存模块,排序以及统计排序过程信息的模块。②分别设计出随机数产生算法,三种排序算法。③按照逻辑的顺序进行组装,并给出必要的过程信息。算法的设计实现以及程序运行结果:

  ⑼求和如下内容有关的资源!

  ⑽关于进一步实施《算法与数据结构》课程改革的构想作者:傅清祥更新日期:--出处:福州大学计算机系关于进一步实施《算法与数据结构》课程改革的构想福州大学数学与计算机科学学院傅清祥从闽教高号和号两个文件获悉,由我主持申报的《算法与数据结构》只获得省级精品课程建设的立项,未能获得省级精品课程的挂牌。前者是对该课程几年来取得的成绩的肯定,而后者说明该课程还存在着差距,还需要努力,需作进一步的改革和建设。为了使《算法与数据结构》经过立项建设能达到省级精品课程甚至更高的水准,我们认真地对照了省教育厅关于精品课程的要求,根据现代教育理念、课程和教学改革的指导思想、以及现代教育技术,提出了以下进一步实施改革和建设的构想。.拓宽思路,打破室、系、院的界限,在校教务处和有关院系的支持下,动员全校范围内教同一门课程的更多教师,组织起课程改革的研讨与实施的队伍,群策群力,互帮互促,分工合作,在把《算法与数据结构》建成省级精品课程的同时,造就该课程全校性的一支稳定的、高质量的师资梯队。大家都知道,要实实在在地把一门课建成精品课程是一项工程,如下面所设想的,有大量艰苦细致的工作要做。可是,现在学生与教师人数比是那么大,教师编制是那么紧,以致象我们计算机系这样的大系,《算法与数据结构》的任课教师也只能安排-人。这-名的教师既要搞好日常的教学,又要承担深化改革,建设精品课程的全部任务。这是很难想象的,除非敷衍或弄虚作假。我想,在这种情况下,必须在做好改革和建设规划的前提下,打破室、系、院的教师界限,在全校范围内把教同一门课或相近课的教师动员起来,组织起来,作深入的研讨和细致的分工,让每位教师实事求是,量力而行,按照自己的专长和兴趣,只参与-项具体的改革和建设,把工作做实,做出成效,才能达到既不影响日常教学工作的质量,又完成精品课程的建设任务,两全其美。事实上,在我们福州大学,开《算法与数据结构》或相近课的,除我们计算机系外,还有数学系、工程技术学院、Napier学院、阳光学院、成人教育学院(将来还有至诚学院等。在这些院系,该课程也都有改革与建设的任务。与其各自为战,不如组织起来,统筹规划,平衡荷载,各显其能,分工合作。如果我们组织得好,既能把改革做实、做深、做透,把成绩做大,又能避免重复建设、重复投资,且受益面大。此外,由于组织起来,有了团队,有了规模,共同的兴趣和共同的价值取向将产生集体的氛围,便于开展许多集体活动,比如教学研讨,资源和经验的交流,老中青的传帮带,邀请国内外同行专家来校讲学、传经、培训,还有合作承担与《算法与数据结构》课程密切相关的软件工程项目的开发和计算理论科研课题的研究,形成教学科研型的队伍。这些都将对师资水平的提高,队伍的稳定起十分重要的作用。它们将与精品课程建设的实践一起造就福州大学的一支稳定的、高质量的师资梯队。.再版《算法与数据结构》教材,更新教材的内容,更新教材的结构,而且使教材多样化、立体化,不仅要有纸质版的主教本,还要有教师用的教学指导书,学生用的实践指导书和习题解析;还要提供配套的课堂教学分级ppt和多媒体课件。王晓东教授和我合编的《算法与数据结构》在年已出了第二版,后来又印了多次。但它根据的是ACM和IEEE推荐的《》和我国计算机学会推荐的《教程》。如今,ACM和IEEE又推出了《》,我国计算机学会也相应推出了《c》。推出计算学科的这些新的教程和知识体系构成,主要是为了适应近十年来计算学科本身的迅速发展和变化(特别是技术的发展和变化,以及随之产生的文化的发展变化和教育观念、教育方法与方式的发展变化,以保持计算学科教育的科学性、系统性和先进性。因此,作为计算学科知识体系主干的《算法与数据结构》课程从内容、结构到形式都必须根据《》和《c》进行更新,以满足新世纪的要求,和国际接轨。如《c》所指出的,计算学科的教育,从本科生开始,需要努力摆脱以外延发展为主的专业(职业教育方式,坚决地走内涵发展的道路,即第一,需要加强基础理论的教育,强化学生“计算思维能力”的训练;第二,选择最佳的知识载体,循序渐进地为学生传授包括基本问题求解过程和基本思路在内的学科方法论,而将一些流行系统和工具作为学生学习过程中的实践环境和学生自我扩展的内容来处理;第三,在强调基础的同时,注意适时、适当地提升教学中的一些基础内容,以满足学科发展的要求。我们将遵循这些原则来指导《算法与数据结构》教材的再版。.在-学年的寒假结束之前完成对教材(王晓东教授和我合编的《算法与数据结构》第二版中适用于本科的那些章节的数据结构和算法可视化演示系统的修改和封装,并在春季开设的级《算法与数据结构》课堂教学中推广使用。该系统充分运用计算机动画技术,形象、直观、生动地呈现各种常见的ADT和关于串、排序、图的基本算法,特别在表现算法的递归技巧和算法设计的增量法、关联法、贪心法、逐步逼近法等方面都有自己的创新,使它们变得很容易理解,很容易掌握,达到节省时间又有大收效的目的。我们将在此成果的基础上,开发与再版的《算法与数据结构》配套的多媒体课件,使教学内容更加直观、形象、生动、有声有色,而且可交互,激发学生各感观,引起学生的兴趣,让学生参与其中,调动学生的学习积极性和创造潜力,实现效果的最大化。、广泛收集各种题型的练习题,丰富已有的《算法与数据结构》习题库,支持任课教师平时的作业布置;开展题库科学化与智能化管理、运作的研究,逐步实现期中考试和期末考试的自动组卷和半自动评卷,切实做到教考分离,减轻教师命题和评卷的工作负担,让老师有更多的时间和精力从事创造性的工作;同时为学生通过网络访问,进行知识和能力自我测试,提供试卷和测试,以及在测试后提供参考答案。、启动课程网站的建设。建设课程网站的目的和要求首先是运用现代信息技术,适应教育理念从“知识传授”到“导致学习交流”的变化,给学生提供一个课程学习交流的舞台,让学生在这个舞台上成为主角,既可以是学生,也可以当教师,不受时间和空间的限制,无拘无束,自由自在,个性化地学习。其次是分别为学生和任课教师提供尽量多的课程教学资料、多媒体课件和教学示范等,方便学生和教师按需选用。第三,为教师提供一个教学文件交流、教学方法交流、教学经验交流和对教学中遇到的具体问题进行研讨的园地,让任课教师之间互相学习,取长补短,共同提高,开拓免费师资培训的渠道。第四,为学生提供网上答疑,解除传统答疑受时间地点等因素的限制。这在大学城初建、许多环境条件有待逐步配备的今天,更有特别的意义。第五,在试题库建设的支撑下,设立网上考场,支持学生对课程学习效果的自我测试,给学生本人提供反馈信息,以便控制、调整进一步学习的计划和过程。第六、开辟求助热线,邦助在个性化学习过程中的学生解决一些特殊的困难。第七,通过网站举办课程高级专题的讲座,满足学有余力的学生的需求。第八,呈现课程改革和建设的成果,扩大受益面,同时广泛收集学生对课程改革和建设的反馈意见和要求,使精品课程的建设始终以学习者为中心,为学习者服务。、在我校级综合班做全程讨论式的课程教学改革试验。从年月日《南方周末》的A版上读到一篇题为《美国一流大学的理念》的文章。此文是冲着北大最近的激烈变革发的。作者是一位在北大读完本科留美的学者。文中有两段话引起我的强烈共鸣。其中一段话说:“一位西方教育家讲过,大学的本质在于把一群优异的年青人聚在一起,让他们的创造力互相激励,产生使他们终身受益的智慧。所以,教授是哪里的博士,出了多少专著,还在次要。重要的是,大学的教学,怎么为年青人创造一种更有成效的互相激发智慧和创造力的环境。”紧接着又一段说:“这一基本精神,和中国大学的精神就很不一致。中国大学是传播知识,我讲你听,好好地记笔记,好好考试。本科年大课一上到底。很少有讨论班,很少写期末论文。知识不少,创造力贫乏,出来常常适应不了社会。”前一段是在褒扬美国一流大学的办学理念,后一段是在贬责中国一流大学在办学理念上的缺损。本人都很赞同,因为本人也有过同样的感触。不过,实行讨论班式的教学要有条件,第一,就如所引第一段话中所说的,学生要是”一群优异的年青人”;第二,学生班的人数要少。后来,我又在《散文(海外版)》年第期上读到一篇文章,题目是《牛津的魅力》,说到牛津大学和剑桥大学教学的最大特点,其实质是与美国一流大学有着同样的办学理念.可见,国际上的一流大学之所以能成为一流,原因就在这里.中国一流大学想冲出亚洲,走向世界,确实要好好向国际上的一流大学学习。他们最有学好的前提条件,因为他们的牌子响,全国的优等生都往那里报考,他们录取的学生都算得上是优异的年青人。另外,他们的教师编制富余,使得他们的学生班有可能分得很小。联系到我们福州大学,虽然离中国一流大学还很远,还在从教学型向教学科研型过渡,学习美国一流大学的前提条件还没具备,因为我们的生源还不那么好,录取的学生还不都是优异的年青人。但是,我想我们也应该学习,因为我们毕竟也能招收到一些优异的年青人,我们至少可以让这部分优异的年青人的创造力互相激励,产生使他们终身受益的智慧,最大化我们福州大学对社会的贡献。所幸的是,学校新一届领导班子上任后,经过调查研究,迅速地作出了复办综合班的正确决定,并且拨出专款给予支持。这将为我校也学习国际一流大学提供一个局部环境,为提高我校办学水平开辟一个能起辐射作用的“特区”。我们想把它作为改革的试点。首先,一改老师在台上讲学生在台下听的传统课堂教学方式,办成讨论班。老师起引导和协调的作用,在讨论前,抛出一些问题;在讨论中也参加面对面的思想交锋;在讨论后,作一个简要的小结,并为下一次讨论伏笔。老师还要起”记者”的作用,及时准确地发现学生的创新表现并给予表彰。创新有大有小,时有时无,我们不能要求每一位学生一下子就有大创新,也不能要求每位学生时时事事有创新。对每一位学生,只要有创新,不论大小都应该及时给予肯定,有一项肯定一项,有两项肯定两项。及时发现和表彰学生的创新点太重要了。我有当学生得到表彰受到激励的体验,也有当老师表彰学生从而使学生受到激励的经历。对综合班的学生,不必考试,免去考试的负担,让读书和研究成为一种乐趣。课程成绩就由平时的创新表现和期末论文的优劣综合评定。评定的依据和结果全部公开。要突破传统的课堂教学方式,把一言堂的课堂变成群言堂的论坛,让优异的年青人的思想自由碰撞,对学生是一种挑战,对老师也是一种挑战,因而,这种课堂教学方式也将是培养和锻练教师的好方式。、加强实践教学环节,突出能力培养。《算法与数据结构》是一门实践性很强的课程,其实践性表现在从实际问题到数学问题的抽象中,在对问题所涉及到的对象的分析归纳、提取概念、引入符号、透视性质、推测命题、证明定理中,在算法与数据结构设计、实现解题的过程中,在算法复杂性的阶的估计中,以及它们的推广应用中,等等。我们加强实践教学,拟采取如下措施:首先是除原计划的实践教学时间外,把由于采用多媒体课件提高了教学效率而省下来的时间添加给实践环节;其次是做好实践教学的组织和安排,开出习题示范课和练习评讲课。第三,在题库建设的支持下,精选课程作业习题,循序渐进,从简单到复杂,从单一到综合,从模仿到创新。每章结束时有章的综合作业,课程结束时有课程的综合作业。第四,组织学生积极参加每年一次的校级程序设计大赛和ACM国际大学生程序设计组队选拔赛。以上七条算是初步的构想,虽然还比较粗,但都不是口号,而是实打实的实事,而且很明显,要切实做下去并把它们做好,工作量和工作难度都非常之大。因此,这当中特别需要各级领导的指导(包括对本构想的指导和多方面(包括编制、经费的支持,以及《算法与数据结构》课程建设项目组全体同仁的齐心协力。

  ⑾快速排序算法原理与实现

  ⑿快速排序的基本思想就是从一个数组中任意挑选一个元素(通常来说会选择最左边的元素作为中轴元素,将剩下的元素以中轴元素作为比较的标准,将小于等于中轴元素的放到中轴元素的左边,将大于中轴元素的放到中轴元素的右边。

  ⒀然后以当前中轴元素的位置为界,将左半部分子数组和右半部分子数组看成两个新的数组,重复上述操作,直到子数组的元素个数小于等于(因为一个元素的数组必定是有序的。

  ⒁以下的代码中会常常使用交换数组中两个元素值的Swap方法,其代码如下

  ⒂public?static?void?Swap(intA,int?i,int?j){

  ⒃快速排序算法的基本思想是:将所要进行排序的数分为左右两个部分,其中一部分的所有数据都比另外一部分的数据小,然后将所分得的两部分数据进行同样的划分,重复执行以上的划分操作,直到所有要进行排序的数据变为有序为止。

  ⒄定义两个变量low和high,将low、high分别设置为要进行排序的序列的起始元素和最后一个元素的下标。第一次,low和high的取值分别为和n-,接下来的每次取值由划分得到的序列起始元素和最后一个元素的下标来决定。

  ⒅定义一个变量key,接下来以key的取值为基准将数组A划分为左右两个部分,通常,key值为要进行排序序列的第一个元素值。第一次的取值为A,以后毎次取值由要划分序列的起始元素决定。

  ⒆从high所指向的数组元素开始向左扫描,扫描的同时将下标为high的数组元素依次与划分基准值key进行比较操作,直到high不大于low或找到第一个小于基准值key的数组元素,然后将该值赋值给low所指向的数组元素,同时将low右移一个位置。

  ⒇如果low依然小于high,那么由low所指向的数组元素开始向右扫描,扫描的同时将下标为low的数组元素值依次与划分的基准值key进行比较操作,直到low不小于high或找到第一个大于基准值key的数组元素,然后将该值赋给high所指向的数组元素,同时将high左移一个位置。

  ⒈重复步骤()(),直到low的植不小于high为止,这时成功划分后得到的左右两部分分别为A,其中,pos下标所对应的数组元素的值就是进行划分的基准值key,所以在划分结束时还要将下标为pos的数组元素赋值为key。

  ⒉Java算法演示系统

  ⒊//哈哈,我做了一种排序的GUI演示importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publilassSortXextendsJFrame{privateJLabeln;privateJButtonstart;privateJTextFieldin;publicSortX(){this.getContentPane().setLayout(null);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setSize(,);this.setLocationRelativeTo(null);this.setResizable(false);this.setAlwaysOnTop(true);start=newJButton(“startsort“);JLabell=newJLabel(“输入组内数字:“);l.setBounds(,,,);add(l);in=newJTextField(“,,,,,,,,,“);in.setBounds(,,,);add(in);start.setBounds(,,,);add(start);start.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){sort();}});n=newJLabel;for(inti=;i《n.length;i++){n=newJLabel();n.setFont(newFont(““,Font.BOLD,));n.setForeground(Color.gray);n.setHorizontalAlignment(JLabel.CENTER);add(n);}}privatevoidsort(){setTitle(“排序演示“);try{Stringsrc=in.getText();src=(““,““);Stringsp=src.split(“,“);finalint;intleft=,w=,offx=,offy=;for(inti=;i《n.length;i++)n.setText(null);for(inti=;i《sp.length;i++){n);v);n.setSize(w,);n.setLocation((left+=w)+offx,offy);}newThread(){publicvoidrun(){start.setEnabled(false);s();try{for(inti=;i《n.length-;i++){if(v){JLabell=n;n;n=l;n.setForeground(Color.blue);for(intk=;k《;k++){n.setVisible(k%==);s();}swap(n);n.setForeground(Color.gray);v;v;v;i-=i==?:;}}}catch(Exceptione){}start.setEnabled(true);}privatevoidswap(JLabela,JLabelb){JLabelt=a;a=b;b=t;Pointpa=a.getLocation();Pointpb=b.getLocation();intx,x,y,y;x=pa.x;x=pb.x;y=pa.y;y=pb.y;intdelay=;while(x《(x+x)/){a.setLocation(++x,y++);b.setLocation(--x,y--);s(delay);}while(x《pb.x){a.setLocation(++x,y--);b.setLocation(--x,y++);s(delay);}a.setLocation(pb);b.setLocation(pa);}privatevoids(inti){try{sleep(i);}catch(Exceptione){}}}.start();}catch(Exceptione){e.printStackTrace();setTitle(“请检查输入的数据,只能输入组哦“);}}publicstaticvoidmain(Stringargs){newSortX().setVisible(true);}}

  ⒋搜索引擎的排序算法都有哪些是怎么实现的

  ⒌基于词频统计——词位置加权的搜索引擎利用关键词在文档中出现的频率和位置排序是搜索引擎最早期排序的主要思想,其技术发展也最为成熟,是第一阶段搜索引擎的主要排序技术,应用非常广泛,至今仍是许多搜索引擎的核心排序技术。其基本原理是:关键词在文档中词频越高,出现的位置越重要,则被认为和检索词的相关性越好。词频统计文档的词频是指查询关键词在文档中出现的频率。查询关键词词频在文档中出现的频率越高,其相关度越大。但当关键词为常用词时,使其对相关性判断的意义非常小。TF/IDF很好的解决了这个问题。TF/IDF算法被认为是信息检索中最重要的发明。TF(TermFrequency:单文本词汇频率,用关键词的次数除以网页的总字数,其商称为“关键词的频率”。IDF(InverseDocumentFrequency:逆文本频率指数,其原理是,一个关键词在N个网页中出现过,那么N越大,此关键词的权重越小,反之亦然。当关键词为常用词时,其权重极小,从而解决词频统计的缺陷。词位置加权在搜索引擎中,主要针对网页进行词位置加权。所以,页面版式信息的分析至关重要。通过对检索关键词在Web页面中不同位置和版式,给予不同的权值,从而根据权值来确定所搜索结果与检索关键词相关程度。可以考虑的版式信息有:是否是标题,是否为关键词,是否是正文,字体大小,是否加粗等等。同时,锚文本的信息也是非常重要的,它一般能精确的描述所指向的页面的内容。.基于链接分析排序的第二代搜索引擎链接分析排序的思想起源于文献引文索引机制,即论文被引用的次数越多或被越权威的论文引用,其论文就越有价值。链接分析排序的思路与其相似,网页被别的网页引用的次数越多或被越权威的网页引用,其价值就越大。被别的网页引用的次数越多,说明该网页越受欢迎,被越权威的网页引用,说明该网页质量越高。链接分析排序算法大体可以分为以下几类:基于随机漫游模型的,比如PageRank和Repution算法;基于概率模型的,如SALSA、PHITS;基于Hub和Authority相互加强模型的,如HITS及其变种;基于贝叶斯模型的,如贝叶斯算法及其简化版本。所有的算法在实际应用中都结合传统的内容分析技术进行了优化。本文主要介绍以下几种经典排序算法:PageRank算法PageRank算法由斯坦福大学博士研究生SergeyBrin和LwraencePage等提出的。PageRank算法是Google搜索引擎的核心排序算法,是Google成为全球最成功的搜索引擎的重要因素之一,同时开启了链接分析研究的热潮。PageRank算法的基本思想是:页面的重要程度用PageRank值来衡量,PageRank值主要体现在两个方面:引用该页面的页面个数和引用该页面的页面重要程度。一个页面P(A被另一个页面P(B引用,可看成P(B推荐P(A,P(B将其重要程度(PageRank值平均的分配P(B所引用的所有页面,所以越多页面引用P(A,则越多的页面分配PageRank值给P(A,PageRank值也就越高,P(A越重要。另外,P(B)越重要,它所引用的页面能分配到的PageRank值就越多,P(A的PageRank值也就越高,也就越重要。其计算公式为:PR(A:页面A的PageRank值;d:阻尼系数,由于某些页面没有入链接或者出链接,无法计算PageRank值,为避免这个问题(即LinkSink问题,而提出的。阻尼系数常指定为.。R(Pi:页面Pi的PageRank值;C(Pi:页面链出的链接数量;PageRank值的计算初始值相同,为了不忽视被重要网页链接的网页也是重要的这一重要因素,需要反复迭代运算,据张映海撰文的计算结果,需要进行次以上的迭代后链接评价值趋于稳定,如此经过多次迭代,系统的PR值达到收敛。PageRank是一个与查询无关的静态算法,因此所有网页的PageRank值均可以通过离线计算获得。这样,减少了用户检索时需要的排序时间,极大地降低了查询响应时间。但是PageRank存在两个缺陷:首先PageRank算法严重歧视新加入的网页,因为新的网页的出链接和入链接通常都很少,PageRank值非常低。另外PageRank算法仅仅依靠外部链接数量和重要度来进行排名,而忽略了页面的主题相关性,以至于一些主题不相关的网页(如广告页面获得较大的PageRank值,从而影响了搜索结果的准确性。为此,各种主题相关算法纷纷涌现,其中以以下几种算法最为典型。Topic-SensitivePageRank算法由于最初PageRank算法中是没有考虑主题相关因素的,斯坦福大学计算机科学系TaherHaveli-wala提出了一种主题敏感(Topic-Sensitive的PageRank算法解决了“主题漂流”问题。该算法考虑到有些页面在某些领域被认为是重要的,但并不表示它在其它领域也是重要的。网页A链接网页B,可以看作网页A对网页B的评分,如果网页A与网页B属于相同主题,则可认为A对B的评分更可靠。因为A与B可形象的看作是同行,同行对同行的了解往往比不是同行的要多,所以同行的评分往往比不是同行的评分可靠。遗憾的是TSPR并没有利用主题的相关性来提高链接得分的准确性。HillTop算法HillTop是Google的一个工程师Bharat在年获得的专利。HillTop是一种查询相关性链接分析算法,克服了的PageRank的查询无关性的缺点。HillTop算法认为具有相同主题的相关文档链接对于搜索者会有更大的价值。在Hilltop中仅考虑那些用于引导人们浏览资源的专家页面(ExportSources。Hilltop在收到一个查询请求时,首先根据查询的主题计算出一列相关性最强的专家页面,然后根据指向目标页面的非从属专家页面的数量和相关性来对目标页面进行排序。HillTop算法确定网页与搜索关键词的匹配程度的基本排序过程取代了过分依靠PageRank的值去寻找那些权威页面的方法,避免了许多想通过增加许多无效链接来提高网页PageRank值的作弊方法。HillTop算法通过不同等级的评分确保了评价结果对关键词的相关性,通过不同位置的评分确保了主题(行业的相关性,通过可区分短语数防止了关键词的堆砌。但是,专家页面的搜索和确定对算法起关键作用,专家页面的质量对算法的准确性起着决定性作用,也就忽略了大多数非专家页面的影响。专家页面在互联网中占的比例非常低(.%,无法代表互联网全部网页,所以HillTop存在一定的局限性。同时,不同于PageRank算法,HillTop算法的运算是在线运行的,对系统的响应时间产生极大的压力。HITSHITS(HyperlinkInducedTopicSearch算法是Kleinberg在年提出的,是基于超链接分析排序算法中另一个最著名的算法之一。该算法按照超链接的方向,将网页分成两种类型的页面:Authority页面和Hub页面。Authority页面又称权威页面,是指与某个查询关键词和组合最相近的页面,Hub页面又称目录页,该页面的内容主要是大量指向Authority页面的链接,它的主要功能就是把这些Authority页面联合在一起。对于Authority页面P,当指向P的Hub页面越多,质量越高,P的Authority值就越大;而对于Hub页面H,当H指向的Authority的页面越多,Authority页面质量越高,H的Hub值就越大。对整个Web集合而言,Authority和Hub是相互依赖、相互促进,相互加强的关系。Authority和Hub之间相互优化的关系,即为HITS算法的基础。HITS基本思想是:算法根据一个网页的入度(指向此网页的超链接和出度(从此网页指向别的网页来衡量网页的重要性。在限定范围之后根据网页的出度和入度建立一个矩阵,通过矩阵的迭代运算和定义收敛的阈值不断对两个向量Authority和Hub值进行更新直至收敛。实验数据表明,HITS的排名准确性要比PageRank高,HITS算法的设计符合网络用户评价网络资源质量的普遍标准,因此能够为用户更好的利用网络信息检索工具访问互联网资源带来便利。但却存在以下缺陷:首先,HITS算法只计算主特征向量,处理不好主题漂移问题;其次,进行窄主题查询时,可能产生主题泛化问题;第三,HITS算法可以说一种实验性质的尝试。它必须在网络信息检索系统进行面向内容的检索操作之后,基于内容检索的结果页面及其直接相连的页面之间的链接关系进行计算。尽管有人尝试通过算法改进和专门设立链接结构计算服务器(ConnectivityServer等操作,可以实现一定程度的在线实时计算,但其计算代价仍然是不可接受的。.基于智能化排序的第三代搜索引擎排序算法在搜索引擎中具有特别重要的地位,目前许多搜索引擎都在进一步研究新的排序方法,来提升用户的满意度。但目前第二代搜索引擎有着两个不足之处,在此背景下,基于智能化排序的第三代搜索引擎也就应运而生。相关性问题相关性是指检索词和页面的相关程度。由于语言复杂,仅仅通过链接分析及网页的表面特征来判断检索词与页面的相关性是片面的。例如:检索“稻瘟病”,有网页是介绍水稻病虫害信息的,但文中没有“稻瘟病”这个词,搜索引擎根本无法检索到。正是以上原因,造成大量的搜索引擎作弊现象无法解决。解决相关性的的方法应该是增加语意理解,分析检索关键词与网页的相关程度,相关性分析越精准,用户的搜索效果就会越好。同时,相关性低的网页可以剔除,有效地防止搜索引擎作弊现象。检索关键词和网页的相关性是在线运行的,会给系统相应时间很大的压力,可以采用分布式体系结构可以提高系统规模和性能。搜索结果的单一化问题在搜索引擎上,任何人搜索同一个词的结果都是一样。这并不能满足用户的需求。不同的用户对检索的结果要求是不一样的。例如:普通的农民检索“稻瘟病”,只是想得到稻瘟病的相关信息以及防治方法,但农业专家或科技工作者可能会想得到稻瘟病相关的论文。解决搜索结果单一的方法是提供个性化服务,实现智能搜索。通过Web数据挖掘,建立用户模型(如用户背景、兴趣、行为、风格,提供个性化服务。

  ⒍求高手用C++编写下以下描述的程序!说下具体设计思路和实现过程感激不尽!

您可能感兴趣的文章:

相关文章