![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法与数据结构
文章平均质量分 77
yuventus
这个作者很懒,什么都没留下…
展开
-
一些重要的算法(转)
<br /> A*搜寻算法<br />俗称A星算法。这是一种在图形平面上,有多个节点的路径,求出最低通过成本的算法。常用于游戏中的NPC的移动计算,或线上游戏的BOT的移动计算上。该算法像Dijkstra算法一样,可以找到一条最短路径;也像BFS一样,进行启发式的搜索。Beam Search<br />束搜索(beam search) 方法是解决优化问题的一种启发式方法,它是在分枝定界方法基础上发展起来的,它使用启发式方法估计k 个最好的路径,仅从这k 个路径出发向下搜索,即转载 2010-07-23 21:29:00 · 452 阅读 · 0 评论 -
寻找发帖“水王”与扩展算法——《编程之美》
<br />Tango是微软亚洲研究院的一个试验项目。研究院的员工和实习生们都很喜欢在Tango上面交流灌水。传说,Tango有一大“水王”,他不但喜欢发贴,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目超过了帖子总数的一半。如果你有一个当前论坛上所有帖子(包括回帖)的列表,其中帖子作者的ID也在表中,你能快速找出这个传说中的Tango水王吗?分析与解法<br />首先想到的是一个最直接的方法,我们可以对所有ID进行排序。然后再扫描一遍排好序的ID列表,统计各个ID出现的次数。如果某个ID转载 2011-06-01 19:22:00 · 1025 阅读 · 0 评论 -
C语言实现八种基本排序(四)
<br />radix_sort.c<br />#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>//return the max number of a[]int find_max(int *a, int len){ int i, max = a[0]; for(i = 1;i < len;i++) { if(max < a[i])原创 2010-08-08 20:28:00 · 333 阅读 · 0 评论 -
C语言实现八种基本排序(三)
<br />heap_sort.c<br />#include <stdio.h>//the value of heapSize is belong 0 and (length - 1).int heapSize = 0;//get the left index of parentint Left(int parent){ return ((parent << 1) + 1);}//get the right index of parentint Right(int原创 2010-08-08 20:28:00 · 363 阅读 · 0 评论 -
C语言实现八种基本排序(二)
<br />1、merge_sort.cpp: 自顶向下,使用递归<br />#include <stdio.h>//#include <stdlib.h>using namespace std;void merge(int *a,int *temp,int lPos,int rPos,int rEnd){ int i,lEnd,tempPos,cout; lEnd = rPos - 1; tempPos = lPos; cout = rEnd - l原创 2010-08-08 20:26:00 · 270 阅读 · 0 评论 -
C语言实现八种基本排序(一)
sort.c#include //直接选择排序(选择排序)void select_sort(int *a, int len){ int i, j, temp, addr; for(i = 0;i原创 2010-08-08 20:22:00 · 395 阅读 · 0 评论 -
排序实现RGB序列(转)
原题: 一个数组,里边存放三种球颜色值:红球为 'R',绿球为 'G ',蓝球为 'B ', 编程对该数组排序,使该数组最后的颜色排列如下:前边元素全部为 'R ',中间元素全部为 'G ',后边为 'B ' 要求尽可能用swap,不允许分配连续的辅助空间。方案①:该算法时间复杂度较大,为0(n平方),空间复杂度O(1)。 用的冒泡排序。void SortRGB(char* pData){ if(pData == NULL){ return;转载 2010-06-14 16:00:00 · 1716 阅读 · 0 评论 -
八大排序算法总结(转)
插入排序1.直接插入排序原理:将数组分为无序区和有序区两个区,然后不断将无序区的第一个元素按大小顺序插入到有序区中去,最终将所有无序区元素都移动到有序区完成排序。要点:设立哨兵,作为临时存储和判断数组边界之用。实现:Void InsertSort(Node L[],int length){ Int i,j;//分别为有序区和无序区指针 for(i=1;i转载 2010-06-04 18:57:00 · 223 阅读 · 0 评论 -
22道数据结构算法面试题(转)
<br /><br /> 1、反转一个链表。循环算法。 <br /> <br /> <br /> 1 List reverse(List l) { <br /> 2 if(!l) return l; <br /> 3 list cur = l.next; <br /> 4 list pre = l; <br /> 5 list tmp; <br /> 6转载 2010-06-03 10:21:00 · 233 阅读 · 0 评论 -
求二进制数中1的个数——《编程之美》
<br />求二进制中1的个数。对于一个字节(8bit)的变量,求其二进制表示中"1"的个数,要求算法的执行效率尽可能的高。<br />先来看看样章上给出的几个算法:<br />解法一,每次除二,看是否为奇数,是的话就累计加一,最后这个结果就是二进制表示中1的个数。<br />解法二,同样用到一个循环,只是里面的操作用位移操作简化了。<br /> 1: int Count(int v) <br /> 2: { <br /> 3: int num = 0;<b转载 2011-06-01 20:05:00 · 902 阅读 · 0 评论