当前位置:首页 > 代码 > 正文

搜索算法程序源代码(简单搜索源码)

admin 发布:2022-12-19 19:31 124


本篇文章给大家谈谈搜索算法程序源代码,以及简单搜索源码对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

怎样有效而快速的找到所需要的算法源代码?有时候比较急,需要大量的算法源代码帮助学习!

说说看要什么算法的代码,如果是基础的,ACM算法竞赛考察的,那么网上有很多ACM竞赛的算法代码模板。

如何在matlab官网上查找算法的源程序

matlab自带的有遗传算法工具箱,也就是两个函数,分别是

x = ga(fitnessfcn,nvars,a,b,aeq,beq,lb,ub,nonlcon,options)

options = gaoptimset('param1',value1,'param2',value2,...)在帮助文件(doc

ga/gaoptimset)里面自己好还看看它的用法就可以了,每一个参数都有详细的说明,应该可以帮助到你。

禁忌搜索算法源代码

禁忌搜索法:使用一个禁忌表,记录下不允许搜索的元素。在后面的搜索中,根据禁忌表来决定如何处理当前元素。用在约瑟夫环中,我们可以用一个数组记录下已经出圈的人的编号,这样再数数时,可以根据禁忌表来判断此人是否还在圈内。

#define N 100

void yuesefu1(int data[],int result[],int sum,int k)

{

int i=0,j=0,count=0;

int n;

while(countsum)

{

for(n=0;ncount;n++)/*根据禁忌表判断此人是否还在圈内*/

if(result[n]==data[i])

break;

if(n=count)/*若此人还在圈内*/

j++;

if(j==k)

{

result[count++]=data[i];/*把出圈的人的编号存入禁忌表*/

j=0;

}

i++;

if(i==sum)

i=0;

}

}

void main()

{

int data[N];

int result[N]={0};

int i,j,total,k;

printf("\nPlease input the number of every people.\n");

for(i=0;iN;)

{

int input;

scanf("%d",input);

if(input==0)

break;

for(j=0;ji;j++)

if(data[j]==input)

break;

if(j=iinput0)

{

data[i]=input;

i++;

}

else

printf("\nData error.Re-input:");

}

total=i;

printf("\nYou have input:\n");

for(i=0;itotal;i++)

{

if(i%10==0)

printf("\n");

printf("%4d",data[i]);

}

printf("\nPlease input a number to count:");

scanf("%d",k);

yuesefu1(data,result,total,k);

printf("\nThe sequence is:\n");

for(i=0;itotal;i++)

printf("%d ",result[i]);

求查找算法(折半查找法,顺序查找法,分别在一个程序里)“动画演示”程序源代码,一共两个源代码

折半搜索(英语: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,到上半段继续查找;如此重复前面的过程直到找到或者lh为止。如果lh,说明没有此数,打印找不到信息,程序结束。

函数实现如下:

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.hint 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 (na[mid]) min=mid;

else if (na[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=0;m=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(na[mid])

top=mid+1;

else if(na[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; in; i++)

if(key[i] == key)

return i;//查找成功

return -1;//查找失败

}

上面只是算法实现函数,对于动画部分,自己用moveto,lineto描点划线的方式实现吧。

关于搜索算法程序源代码和简单搜索源码的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/20572.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载