Demo的中文含意为“示范”、“展示”、“样片”、“样稿”,常被用来称呼具有示范或展示功能及意味的事物。
Demo源码可以理解为某种计算机语言的示例代码,是可以在相应的编译环境下直接运行的源代码,通常Demo的作用就是Demo源码开发者引导其他程序员进行二次开发所提供的模板程序代码。
折半搜索(英语:half-interval search),也称二分搜索(英语:binary search)、对数搜索(英语:logarithmic search),是一种在有序数组中查找某一特定元素的搜索算法。
搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。
折半查找法是效率较高的一种查找方法。假设有已经按照从小到大的顺序排列好的五个整数a0~a4,要查找的数是X,其基本思想是: 设查找数据的范围下限为l=0,上限为h=4,求中点m=(l+h)/2,用X与中点元素am比较,若X等于am,即找到,停止查找;否则,若X大于am,替换下限l=m+1,到下半段继续查找;若X小于am,换上限h=m-1,到上半段继续查找;如此重复前面的过程直到找到或者l>h为止。如果l>h,说明没有此数,打印找不到信息,程序结束。
函数实现如下:
bin_search(int A[],int n,int key){int low,high,mid
low = 0
high = n-1
while(low<=high)
{
mid =(low + high)/2
if(A[mid]==key)return mid
if(A[mid]<key){
low =mid + 1
}
if(A[mid]>key){
high= mid - 1
}
}
return -1
}
C语言实现代码
#include <stdio.h>int main()
{
int a[11]={0,1,2,3,4,5,6,7,8,9,10},min=0,max=10,mid,n //max为数列长度,a[0]作为第一个数组元素
printf("请输入您要查找的数:\n")
scanf("%d",&n)
while(min+1!=max)
{
mid=(min+max)/2
if (n>a[mid]) min=mid
else if (n<a[mid]) max=mid
else
{
printf("输入的数在数列的第%d位\n",mid)
exit(0)
}
}
if(n==a[max])
{
max+=1
printf("\n输入的数在数列的第%d位\n",max)
}
else if(n==a[min])
{
min+=1
printf("\n输入的数在数列的第%d位\n",min)
}
else if(n!=a[mid])
printf("\n输入的数不在数列中")
}
Dev-c++实现
#include <stdio.h>
#include <stdlib.h>
void main()
{
int a[15]={1,2,3,4,5,6,7,8,9,10,11,12,13,15}
int n,m,top,bot,mid
top=m=1 //此处修改top=0m=1
bot=14
printf("please input a number:")
scanf("%d",&n)
while(top<=bot)
{
mid=(top+bot)/2
if(n==a[mid])
{
printf("这是第%d个元素的值。\n",mid+1)
m=0
break
}
else if(n>a[mid])
top=mid+1
else if(n<a[mid])
bot=mid-1
}
if(m)
printf("无此数。\n")
system("PAUSE")
return 0
}
顺序查找是按照序列原有顺序对数组进行遍历比较查询的基本查找算法。
对于任意一个序列以及一个给定的元素,将给定元素与序列中元素依次比较,直到找出与给定关键字相同的元素,或者将序列中的元素与其都比较完为止。
函数实现如下:
int sq_search(keytype keyp[],int n,keytype key){
int i
for(i=0 i<n i++)
if(key[i] == key)
return i//查找成功
return -1//查找失败
}
上面只是算法实现函数,对于动画部分,自己用moveto,lineto描点划线的方式实现吧。
1. 选择一个算法(提供选择见下),利用各种方法(图形、动画等)演示算法的演示过程。2. 可以进行手动演示,也可以自动步进式演示。
3. 允许用户设置算法的各个输入参数,以及自动步进式演示中的时间间隔。
4. 不同的算法输入要求见下。
界面要求:
1. 尽量使用图形界面实现,要符合日常软件使用规范来设计菜单和界面。
2. 如果无法实现图形界面,则在命令行方式下也需要提供菜单,方便用户 *** 作。
其他要求:
1. 标识符命名遵循Windows命名规范。
2. 能够注意各种异常处理,注重提高程序运行效率。
提交内容:
1. 全部源代码。
2. 软件设计和使用说明书(UML类图;实现的功能、主要技术;使用帮助文档)
参考算法:
1. 最小生成树算法:Prim算法、Kruskal算法。允许以下方式输入一个图形:绘制图形、输入邻接矩阵、输入边及其关联的顶点。要求在图形方式下进行演示算法执行步骤。
2. 单源最短路算法:Dijkstra算法。允许以下方式输入一个图形:绘制图形、输入邻接矩阵、输入边及其关联的顶点。要求在图形方式下进行演示算法执行步骤。
3. 最优编码算法:Huffman编码算法。允许用户输入一段英文文字,或者打开一个txt文档(英文内容),据此文档内容进行编码。要求动态列出每个字符的出现概率统计结果以及对应编码。
4. 其他可供演示的具有一定难度的算法,如关键路径问题、有向图的极大连通分支等。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)