| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 917 人关注过本帖
标题:初学者:一个2分法查找数字的代码!不知道错在哪2分法代码哪一段直接跳过不 ...
取消只看楼主 加入收藏
qweewqeee
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2016-3-6
结帖率:0
收藏
已结贴  问题点数:20 回复次数:4 
初学者:一个2分法查找数字的代码!不知道错在哪2分法代码哪一段直接跳过不执行!求大神帮忙!
#include<stdlib.h>
#include<stdio.h>
#include<time.h>
void add(int a[], int n)
{
    for (int i = 0; i < n - 1; i++)
    {
        int x = i;
        for (int j = i + 1; j < n; j++)
        {
            if (a[x] > a[j])
            {
                x = j;
            }
        }
        if (x != i)
        {
            a[x] = a[x] - a[i];
            a[i] = a[x] + a[i];
            a[x] = a[i] - a[x];
        }
    }
}
void sjs(int a[], int n)
{
    int t = (int)time(NULL);
    srand(t);
    for (int i = 0; i < n; i++)
    {
        a[i] = rand()%1000;
        /*    printf("%d\n", a[i]);*/
    }
}
int erfen(int a[], int n, int b)
{
    for (int tou = 0, wei = n - 1, zhong = (n - 1) / 2; tou >= wei; zhong = (tou + wei) / 2)
    {
        if (a[zhong] == b)
            return zhong;
        else if (a[zhong] < b)
            tou = zhong + 1;
        else if (a[zhong] > b)
            wei = zhong - 1;
    }
    return -1;
}
void main()
{
    int a[1000];
    int b;
    sjs(a, 1000);
    add(a, 1000);
    for (int i = 0; i < 1000; i++)
    {
        printf("a[%d]=%d\n", i, a[i]);
    }
    scanf("%d", &b);
    if (a[erfen(a, 1000, b)] == b)
    {
        printf("已经找到该数");
    }
    else
    {
        printf("没有查找到该数请重新输入");
    }
    system("pause");
}
搜索更多相关主题的帖子: include 
2016-03-06 16:06
qweewqeee
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2016-3-6
收藏
得分:0 
回复 2楼 qq1023569223
如果找到 retune zhong;   找不到才返回-1
int erfen(int a[], int n, int b)
{
        for (int tou = 0, wei = n - 1, zhong = (n - 1) / 2; tou >= wei; zhong = (tou + wei) / 2)
        {
                if (a[zhong] == b)
                        return zhong;

                else if (a[zhong] < b)
                        tou = zhong + 1;
                else if (a[zhong] > b)
                        wei = zhong - 1;
        }
        return -1;
}
2016-03-06 17:01
qweewqeee
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2016-3-6
收藏
得分:0 
回复 5楼 wmf2014
谢了! 我是犯2了!for循环中间条件成立才循环!搞混了!谢谢了! 还不找出问题来我都准备把软件卸载重装了!自学真累啊!
2016-03-06 18:21
qweewqeee
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2016-3-6
收藏
得分:0 
回复 6楼 qq1023569223
自己看视频学的!没什么系统知识!是有点乱!正在努力学习中!
2016-03-06 18:25
qweewqeee
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2016-3-6
收藏
得分:0 
回复 5楼 wmf2014
刚刚试了下 tou < wei 这样会漏掉最前一个和最后一个 应该加个等号就完美了!后面那句已经引用你的了!再次感谢!
2016-03-06 18:42
快速回复:初学者:一个2分法查找数字的代码!不知道错在哪2分法代码哪一段直接跳 ...
数据加载中...
 
   



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

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