C语言查找函数

Python06

C语言查找函数,第1张

首先,指针默认只有一个地址的长度的空间,存不了那么多的字符。

其次,传值和传地址一塌糊涂,完全就是乱写么。

scanf的第二个参数是地址,如果本身不是指针则需要取址符。

我给你重写了算了

#include<stdio.h>

int Retrieve(int array[],int length,int x)/*形参x直接传值就可以了*/

int main()

{

int *a,x

int length,i

scanf("%d",&length)

a = (int)malloc(sizeof(int)*length)/*申请一个内存空间用来存放数据,或者直接用一个大数组也可以*/

#include <stdio.h>

int search(int a[],int b,int c,int i)

{

    int x,y,z

    x=i+1

    z=b-1

    y=(x+z)/2

    while(x<=z)

    {

        if(a[y]>c)

        {

            z=y-1

            y=(x+z)/2

            continue

        }

        if(a[y]<c)

        {

            x=y+1

            y=(x+z)/2

            continue

        }

        return y+1

    }

    return -1

}

int main()

{

    int i,m,pos

    scanf("%d",&m)

    int a[m]

    for(i=0i<mi++)

    {

        scanf("%d",&a[i])

    }

    for(i=0i<mi++)

    {

        pos=search(a,m,a[i],i)

        if(pos!=-1)

        {

            printf("FOUND a[%d]=%d, position is %d\n",i,a[i],i+1)

            return 0

        }

    }

    if(pos==-1)

    {

        printf("NOT FOUND\n")

    }

    return 0

}

这种查找方法的数组必须是从小到大的,用遍历的话就没这个问题了。