随笔 - 159, 文章 - 0, 评论 - 14, 阅读 - 25万
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

随笔分类 -  每日算法

摘要:笔记:Status ListMerge_L(LinkList listA,LinkList listB,LinkList &listC){ listC=(LinkList)malloc(sizeof(LNode)); LinkList p=listA->next; LinkList q=listB->next; LiskList temp; listC=temp=listA; while(p&&q) { if(p->data<q->data) { temp->next=p; ... 阅读全文

posted @ 2012-05-06 00:49 bug yang 阅读(211) 评论(0) 推荐(0) 编辑

摘要:归并排序时间复杂度O(NlgN)分治法解题的一般步骤:(1)分解,将要解决的问题划分成若干规模较小的同类问题;(2)求解,当子问题划分得足够小时,用较简单的方法解决;(3)合并,按原问题的要求,将子问题的解逐层合并构成原问题的解。http://www.cnblogs.com/Creator/archive/2011/06/18/2084267.html<?phpfunction t_sort(&$arr,$start,$end){ if($start<$end){ $mid=intval(($start+$end)/2); t_sort($arr,$start... 阅读全文

posted @ 2012-03-07 09:38 bug yang 阅读(519) 评论(0) 推荐(0) 编辑

摘要:平时我们使用的字符串查找,都是用语言自带的字符串查找函数,比如php中使用strpos(string,find,start);C#中使用string.indexof(),C++中的strstr()等函数,但是这些函数的效率却并不高。如果要在长度为n的字符串A中,查找长度为m的字符串B,它们最坏的时间复杂度为O(m*n),随着子字符串长度m的增大,这些函数的时间复杂度也相应地成倍增加。 现在我们介绍一下一些常用的字符串查找算法: 1、我们先写出来最一般最常用的查找字符串的算法: function indexOf($parent,$find,$start){ $_start=$st... 阅读全文

posted @ 2012-01-16 16:15 bug yang 阅读(2503) 评论(0) 推荐(0) 编辑

摘要:一群猴子排成一圈,按1,2,...,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去...,如此不停的进行下去,直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n, 输出最后那个大王的编号。function king($m,$n){ for($i=1;$i<=$n;$i++) { $arr[]=$i; } $i=0; $k=$n; while(count($arr)>1) { if(($i+1)%$m==0) { ... 阅读全文

posted @ 2011-09-19 16:07 bug yang 阅读(567) 评论(0) 推荐(0) 编辑

摘要:<?php$arr = array(1,7,3,9,3,2); for($i=0;$i<count($arr);$i++){ $temp=$arr[$i]; $j=$i-1; while($j>=0) { if($arr[$j]>$temp) { array_splice($arr,$j+1,1,$arr[$j]);//或者$arr[$j+1]=$arr[$j]; $j--; } else break; } $arr[$j+1]=$tem... 阅读全文

posted @ 2011-09-17 16:12 bug yang 阅读(127) 评论(0) 推荐(0) 编辑

摘要:一、问题描述一辆吉普车来到1000km宽的沙漠边沿。吉普车的耗油量为1L/km,总装油量为500L。显然,吉普车必须用自身油箱中的油在沙漠中设几个临时 加油点,否则是通不过沙漠的。假设在沙漠边沿有充足的汽油可供使用,那么吉普车应在哪些地方、建多大的临的加油点,才能以最少的油耗穿过这块沙漠?二、分析解答 A-----------Cn---C3---------C2------------------C1--------------------B起点 临时加油站 终点从这个题目来看,这是一个极限问题,求得是最少耗油的量,所以只有唯一答案。1、从题目来看,为了穿越这个沙漠,同时耗油量最少,那么吉普车 阅读全文

posted @ 2011-08-19 21:11 bug yang 阅读(5092) 评论(0) 推荐(2) 编辑

摘要:动态规划笔记 阅读全文

posted @ 2011-05-06 12:41 bug yang 阅读(151) 评论(0) 推荐(0) 编辑

摘要:贪心算法笔记 阅读全文

posted @ 2011-05-06 12:40 bug yang 阅读(149) 评论(0) 推荐(0) 编辑

摘要:今天我们讲解快速排序还是老规矩,先列一下快速排序的规则:1)设置两个变量font、end,排序开始的时候:font=0,end=N-1; 2)以第一个数组元素作为关键数据,赋值给key,即 key=array[0]; 3)从font开始向后搜索,即由前开始向后搜索(++font),找到第一个大于key的值array[font](这里注意,我们用的是++font,就是为了找到大于key的这个font值,如果用font++的话,最后使用时应该用font+1); 4) 从end开始向前搜索,即由后开始向前搜索(--end),找到第一个小于key的array[end],在3)与4)的过程中如果 ... 阅读全文

posted @ 2011-05-01 17:49 bug yang 阅读(442) 评论(0) 推荐(0) 编辑

摘要:算法思想简单描述:在插入第i个元素时,对前面的0~i-1元素进行折半,先跟他们中间的那个元素比,如果小,则对前半再进行折半,否则对后半进行折半,直到left>right,然后再把第i个元素前1位与目标位置之间的所有元素后移,再把第i个元素放在目标位置上。 二分法排序最重要的一个步骤就是查找要插入元素的位置,也就是要在哪一个位置上放我们要准备排序的这个元素。当我们查找到位置以后就很好说了,和插入排序一样,将这个位置以后的所有元素都向后移动一位。这样就实现了二分法排序。 然后是怎么查找着一个位置呢,就是不断的比较已排序的序列中的中间元素和要排序元素,如果大于的话,说明这个要排序的元素在已排序 阅读全文

posted @ 2011-04-28 23:10 bug yang 阅读(21264) 评论(2) 推荐(1) 编辑

摘要:维基百科上的算法描述: 一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下:从第一个元素开始,该元素可以认为已经被排序取出下一个元素,在已经排序的元素序列中从后向前扫描如果该元素(已排序)大于新元素,将该元素移到下一位置重复步骤3,直到找到已排序的元素小于或者等于新元素的位置将新元素插入到该位置中重复步骤2如果比较操作的代价比交换操作大的话,可以采用二分法来减少比较操作的数目。 自己的理解: 说实话,学过数据结构的同学们应该都对在一个线性链表中插入一个元素不陌生吧,至少考试数据结构的时候这个可是必出题。如果想在一个链表中插入一个元素的话就是把所插入元素之后的所有元素全... 阅读全文

posted @ 2011-04-27 23:42 bug yang 阅读(392) 评论(0) 推荐(0) 编辑

摘要:今天是第一次在博客园写文章,呵呵,简单点,以后会慢慢深入的,欢迎拍砖。 冒泡排序(Bubble Sort,泡沫排序或气泡排序)它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。 这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。 这个算法所到底就是拿出一个元素和其他所有的元素比较一下,然后每一次循环都把这次循环最小的元素排在最前边。 下边是代码:class BubbleSort{ public static void Bubble(ref int[] array) { for (int i = 0; i < array.Length - 阅读全文

posted @ 2011-04-26 22:06 bug yang 阅读(852) 评论(0) 推荐(1) 编辑

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