柯侧耳倾听者 - 云代码空间
—— 翱翔在Java世界的海洋之上
查找算法
一、实验目的与要求
在查找算法中,因为我们不知道数组中的元素是否有序,所以我们不可能做到更好,在不同的情况下,我们要选不同的查找算法
二、实验原理
对数组进行遍历,找到要查元素在数组中的位置,并返回对应元素的下标,如果数组中不存在要查元素,则返回-1
三、预习与准备
1.better_linear_search
#include "stdio.h"
int better_linear_search(int arr[],int len,int key )
{
int i;
for(i=0;i<len;i++)
if(arr[i]==key)
break;
return i;
if(i<len)
return i;
else
return -1;
}
int main()
{
int array[]={1,3,5,7,9,6,4,2,0};
printf("%d",better_linear_search(array,9,6));
return 0;
}
2.linear_search
#include "stdio.h"
int linear_search(int arr[],int len,int key)
{
int i;
for(i=0;i<len;i++)
if(arr[i]==key)
break;
return i;
}
int main()
{
int array[]={1,5,9,7,6,8,3,4,2} ;
printf("%d",linear_search(array,9,6));
return 0;
}
3.sentinel_linear_search
#include "stdio.h"
int sentinel_linear_search(int arr[],int len,int key)
{
int i;
int last;
last = arr[len-1];
arr[len-1]=key;
for(i=0;i<len;i++)
if(arr[i]==key)
break;
return i;
if(last==key)
return len-1;
else
return -1;
}
int main()
{
int array[]={1,3,7,9,2,4,6,8,5};
printf("%d",sentinel_linear_search(array,9,3));
return 0;
}
四、实验过程记载
在实验当中,虽然遇到了一些问题,让自己不知所措,难以解决,但是随着实验的进行,自己对算法分析与设计有了一定的了解,在老师和同学的细心解答下,我慢慢的解决了在实验当中所遇到的困难,也是自己学习到了更多的知识,操作起来也更加熟练。
五、实验结论(或总结)
在这次的学习当中,我掌握了数组元素查找的一些常用的的方法,也学会了很多的查找算法的知识,让我对查找有了基本的认识。所以在今后的学习中,要更加努力掌握更多的知识,更好的学好算法分析语设计这门课程,多于老师和同学交流。
六、实验思考与讨论
通过这次实验,我明白了仅仅靠自己的学习是不够的,还必需要借助老师和同学的帮助,只有这样,我们才能够学的更好