二分查找

作者在 2012-10-28 19:16:58 发布以下内容
//:二分查找
#include <stdio.h>

int main(){
    typedef struct{
        char name[20];
        int no;
    }employee;    

    employee array[10];
    int i, j, temp, findNo, min, max, middle;

    for(i=0; i<10; i++){
        printf("输入工号:");
        scanf("%d", &array[i].no);
        printf("输入姓名:");
        scanf("%s", array[i].name);        
    }
    /*选择排序*/
    for(i=0; i<9; i++){
        for(j=i+1; j<10; j++){
            if(array[i].no>array[j].no){
                temp = array[i].no;
                array[i].no = array[j].no;
                array[j].no = temp;
            }
        }
    }//for

    for(i=0; i<10; i++){
        printf("no = %d, name = %sn", array[i].no, array[i].name);    
    }
    min = 0;
    max = 9;

    printf("输入要查找工人的工号:");
    scanf("%d", &findNo);

    while(array[min].no < array[max].no){
        middle = (min+max)/2;
        if(findNo > array[middle].no){
            min = middle;
        }else if(findNo < array[middle].no){
            max = middle;
        }else{
            break;
        }
    }
    if(max>min){
        printf("%sn", array[middle].name);
    }else{
        printf("没有找到n");
    }

    return 0;
}
 
基础编程 | 阅读 809 次
文章评论,共0条
游客请输入验证码
浏览18298次
文章归档