简单查找算法时间复杂度

查找算法时间复杂度

问题描述

写出两种检索算法:在一个排好序的数组T[1…n]中查找x,如果x在T中,输出x在
T的下标j;如果x不在T中,输出j=0.按实验模板编写,“分析”部分仅给出复杂度
结果即可。

算法

顺序查找:顺序查找也称为线形查找,属于无序查找算法。从数据结构线形表的一端开始,顺序扫描,依次将扫描到的结点关键字与给定值k相比较,若相等则表示查找成功;若扫描结束仍没有找到关键字等于k的结点,表示查找失败。

二分查找:也称为是折半查找,属于有序查找算法。用给定值k先与中间结点的关键字比较,中间结点把线形表分成两个子表,若相等则查找成功;若不相等,再根据k与该中间结点关键字的比较结果确定下一步查找哪个子表,这样递归进行,直到查找到或查找结束发现表中没有这样的结点。

代码

下面展示一些 内联代码片

int sort1(int x)  //顺序查找
{
     
	int n=sizeof(t)/sizeof(int);
	int i;
	for(i=0;i<n;i++)
	{
     
		if(x==t[i])
		{
     
			printf("sort1:%d\n",i+1);
			break;
		}
		if(i==n-1)
		printf("sort1:0\n");
	}
 } 
 int sort2(int x)   //二分查找
 {
     
 	int n=sizeof(t)/sizeof(int);
 	int i,j;
 	i=0;
	j=n-1;
	while(i<=j)
	{
     
		if(x>t[(i+j)/2])
		{
     
			i=(i+j)/2+1;
		}
		else if(x<t[(i+j)/2])
		{
     
			j=(i+j)/2-1;
		}
		else
		{
     
			return (i+j)/2+1;
			break;
		}
    }
    return 0;
}

github源码

https://github.com/1651928813/Pepsi_juice

你可能感兴趣的:(算法)