정적 검색
4383 단어 code
#include "stdio.h"
#include "stdlib.h"
#include "io.h"
#include "math.h"
#include "time.h"
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define MAXSIZE 100 /* */
typedef int Status; /* Status , , OK */
int F[100]; /* */
/* ,a ,n ,key */
int Sequential_Search(int *a,int n,int key)
{
int i;
for(i=1;i<=n;i++)
{
if (a[i]==key)
return i;
}
return 0;
}
/* */
int Sequential_Search2(int *a,int n,int key)
{
int i;
a[0]=key;
i=n;
while(a[i]!=key)
{
i--;
}
return i;
}
/* */
int Binary_Search(int *a,int n,int key)
{
int low,high,mid;
low=1; /* */
high=n; /* */
while(low<=high)
{
mid=(low+high)/2; /* */
if (keyhigh=mid-1; /* 최고 아래 첨자에서 중위 아래 첨자 작게 조정*/
else if(key>a[mid])/* 검색 값이 중간값보다 크면 */
low=mid+1; /* 최저 하단을 중위 하단으로 조정*/
else
{
return mid; /* 만약 같다면mid가 찾은 위치*/
}
}
return 0;
}
/* 보간 찾기 */
int Interpolation_Search(int *a,int n,int key)
{
int low,high,mid;
low=1; /* 최소 아래 로깅 첫 번째 */ 정의
high=n; /* 레코드 최하위로 정의*/
while(low<=high)
{
mid=low+ (high-low)*(key-a[low])/(a[high]-a[low]); /* 보간*/
if (keyhigh=mid-1; /* 아래 첨자를 보간법 아래 첨자로 한 자릿수 작게 조정*/
else if(key>a[mid])/* 삽입값보다 큰 값을 찾으면 */
low=mid+1; /* 최소 아래 첨자를 보간 값 아래 첨자 크기로 조정*/
else
return mid; /* 만약 같다면mid가 찾은 위치*/
}
return 0;
}
/* 피보나치 찾기*/
int Fibonacci_Search(int *a,int n,int key)
{
int low,high,mid,i,k=0;
low=1; /* 최소 아래 로깅 첫 번째 */ 정의
high=n; /* 레코드 최하위로 정의*/
while(n>F[k]-1)
k++;
for (i=n;i
a[i]=a[n];
while(low<=high)
{
mid=low+F[k-1]-1;
if (key{
high=mid-1;
k=k-1;
}
else if (key>a[mid])
{
low=mid+1;
k=k-2;
}
else
{
if (mid<=n)
return mid; /* 만약 같다면mid가 찾은 위치*/
else
return n;
}
}
return 0;
}
int main(void)
{
int a[MAXSIZE+1],i,result;
int arr[MAXSIZE]={0,1,16,24,35,47,59,62,73,88,99};
for(i=0;i<=MAXSIZE;i++)
{
a[i]=i;
}
result=Sequential_Search(a,MAXSIZE,MAXSIZE);
printf("Sequential_Search:%d ",result);
result=Sequential_Search2(a,MAXSIZE,1);
printf("Sequential_Search2:%d ",result);
result=Binary_Search(arr,10,62);
printf("Binary_Search:%d ",result);
result=Interpolation_Search(arr,10,62);
printf("Interpolation_Search:%d ",result);
F[0]=0;
F[1]=1;
for(i = 2;i < 100;i++)
{
F[i] = F[i-1] + F[i-2];
}
result=Fibonacci_Search(arr,10,62);
printf("Fibonacci_Search:%d ",result);
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
소스 코드가 포함된 Python 프로젝트텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.