贺老师教学链接  C语言及程序设计提高 本课讲解

 

数组中的基本操作:顺序查找元素

#include <stdio.h>
#define SIZE 10
int main( )
{
    int d[SIZE]={34, 43, 98, 72, 12, 47, 31, 43, 1, 78};
    int i,key,index=-1;
    printf("Input a key you want to search: ");
    scanf("%d" , &key);
    for(i=0; i<SIZE; i++)
        if(key == d[i])
        {
            index = i;
            break;
        }
    if(index >= 0)
        printf("The index of the key is %d .\n", index);
    else
        printf("Not found.\n");
    return 0;
}


用二分方法查找有序数组:一次比较, 缩减一半的规模
#include <stdio.h>
#define SIZE 10
int main( )
{
    int d[SIZE] = {1, 3, 9, 12, 32, 41, 45, 62, 75, 77};
    int low, high,mid,key,index=-1;
    printf("Input a key you want to search: ");
    scanf("%d" , &key);
    low=0,high=SIZE-1;
    while(low<=high)
    {
        mid=(low+high)/2;
        if(d[mid]==key){
            index=mid; break;
        }
        else if(d[mid]>key)
            high=mid-1;
        else
            low=mid+1;
    }
    if(index >= 0)
        printf("The index of the key is %d .\n", index);
    else
        printf("Not found.\n");
    return 0;
}