• 实践6.4


    二分法查找(选择排序)

    源程序:

    #include <stdio.h>
    #define MaxSize 8
    typedef struct
    {
    int stuno;
    char stuname[20];
    }TableElem;

    TableElem stu[]={{1009,"wang"},{4400,"ren"},{1001,"zhang"},
    {4003,"qin"},{2005,"sun"},{2008,"liu"},{3001,"zheng"},{3005,"lai"}};

    typedef struct
    {
    TableElem elem[MaxSize];
    int n;
    }SqTable;

    //二分查找函数
    int bin_search(SqTable *T,int key)
    {
    int low,high,mid;
    low=1;
    high=MaxSize;

    while(low<=high)
    {
    mid=(low+high)/2;
    if(T->elem[mid].stuno==key)
    return mid;
    else if(key<T->elem[mid].stuno)
    high=mid-1;
    else
    low=mid+1;
    }
    return 0;
    }
    /*
    int searchsqtable(SqTable T,int key) //查找函数
    {
    T.elem[0].stuno=key;
    int i=T.n;
    while(T.elem[i].stuno!=key)
    i--;
    return i;
    }
    */
    //选择排序
    void select_sort(SqTable *T,int nn)
    {
    int min,i,j;
    TableElem temp;
    for(i=0;i<nn;i++)
    {
    min=i;
    for(j=i+1;j<nn;j++)
    {
    if(T->elem[j].stuno<T->elem[min].stuno)
    min=j;
    }
    if(min!=j)
    {
    temp=T->elem[min];
    T->elem[min]=T->elem[i];
    T->elem[i]=temp;
    }
    }
    }
    int main()
    {
    SqTable seq;
    for(int i=0;i<MaxSize;i++)
    {
    seq.elem[i]=stu[i]; //用stu[8]8个人初始化elem[8]数组
    }
    seq.n=MaxSize;
    //8个人按学号排序
    int n=MaxSize;
    select_sort(&seq,n);

    for(i=0;i<MaxSize;i++)
    printf("%d %s ",seq.elem[i].stuno,seq.elem[i].stuname);

    int kk,mm;

    //for(i=0;i<MaxSize;i++)
    //{
    //seq1.elem[i]=seq.elem[i]; //用stu[8]8个人初始化elem[8]数组
    //}

    printf("请输入要查找的学号:");
    scanf("%d",&kk);
    mm=bin_search(&seq,kk); //调用查找函数
    printf("此人在顺序表中的位置是:%d ",mm+1);
    printf("%d号的姓名为:%s ",mm+1,seq.elem[mm].stuname);
    return 1;
    }

    运行结果:

  • 相关阅读:
    剑指Offer解题报告(Java版)——约瑟夫环 45
    剑指Offer解题报告(Java版)——扑克牌顺子 44
    剑指Offer解题报告(Java版)——n个骰子的点数 43
    基础知识:HashTable和HashMap的区别
    基础知识:Arraylist、vector、Linkedlist的比较
    第7章 SportsStorePeta 一个真实的应用程序
    第24章 捆绑包
    第23章 模型验证
    第22章 模型绑定
    第21章 URL和Ajax辅助器方法
  • 原文地址:https://www.cnblogs.com/duanqibo/p/13345609.html
Copyright © 2020-2023  润新知