| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1207 人关注过本帖
标题:顺序表的二分法查找,帮帮我吧
只看楼主 加入收藏
柚子T
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2018-4-26
收藏
 问题点数:0 回复次数:0 
顺序表的二分法查找,帮帮我吧
#include<stdio.h>
#include<conio.h>
#define maxsize 5
#define NULL 0
typedef struct d
{
    int data[maxsize+1];
    int last;
}sq;

void InsertSort(sq R);
int find(int , sq key);

void main()
{
    int num,j;
    sq line;
    int i;
    char p='y';
    printf("请输入顺序表数据:");
    printf("\n");
    for(i=1;i<=5;i++)
    {
        scanf("%d",&line.data[i]);
        printf("\n");
    }
    line.last=i;
    void InsertSort(sq R);
    printf("\n");
    printf("顺序表如下:\n");
    for(j=1;j<6;j++)
    {
        printf("%d  ",line.data[j]);
    }
   
    while((p=='y')|(p=='Y'))
    {
        printf("\n");
        printf("请输入要查找的数据:");
        scanf("%d",&num);
        printf("\n");
        find(num,line);
        printf("若继续查找请输入y,否则按任意键结束\n");
        p=_getch();
        printf("\n");
    }}


void InsertSort(sq R)
{
    int a,b;
    for(a=2;a<=5;a++)
        if(R.data[a]<R.data[a-1])
        {
            R.data[0]=R.data[a];b=a-1;
            do
            {
                R.data[b+1]=R.data[b];
                b--;
            }
            while(R.data[0]<R.data[b]);
            R.data[b+1]=R.data[0];
        }
}

int find(int n,sq key)
{
    int low,high,mid;
    low=1;
    high=key.last;
    while(low<=high)
    {
        mid=(low+high)/2;
        if(n==key.data[mid])
        {
            printf("查找成功,数据位置为:%d\n",mid);
            return 1;
        }
        if(n<key.data[mid])
            high=mid-1;
        else
            low=mid+1;
    }
    printf("查找失败\n");
    return 0;
}
搜索更多相关主题的帖子: 查找 int data printf mid 
2018-04-26 21:46
快速回复:顺序表的二分法查找,帮帮我吧
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030972 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved