OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3511|回复: 5

求大神帮我写个二分查找的算法,想这个头都晕了。

[复制链接]

1

主题

3

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2011-4-19
在线时间
1 小时
发表于 2018-10-24 11:00:44 | 显示全部楼层 |阅读模式
假如数组有且只有一个0xff,能否有算法快速找到它?
二分法能否有用?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

259

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2317
金钱
2317
注册时间
2016-12-2
在线时间
354 小时
发表于 2018-10-24 11:12:04 | 显示全部楼层
标准的C库函数不就有bsearch()?
回复 支持 反对

使用道具 举报

1

主题

3

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2011-4-19
在线时间
1 小时
 楼主| 发表于 2018-10-24 13:48:22 | 显示全部楼层
sammy902583 发表于 2018-10-24 11:12
标准的C库函数不就有bsearch()?

想确定bsearch()在这种情况下能否有用。
回复 支持 反对

使用道具 举报

13

主题

633

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1331
金钱
1331
注册时间
2016-8-1
在线时间
229 小时
发表于 2018-10-24 14:19:24 | 显示全部楼层
[mw_shl_code=c,true]WCHAR ff_convert (        /* Converted code, 0 means conversion error */
        WCHAR        chr,        /* Character code to be converted */
        UINT        dir                /* 0: Unicode to OEMCP, 1: OEMCP to Unicode */
)
{
        const WCHAR *p;
        WCHAR c;
        int i, n, li, hi;


        if (chr < 0x80) {        /* ASCII */
                c = chr;
        } else {
                if (dir) {                /* OEMCP to unicode */
                        p = oem2uni;
                        hi = sizeof oem2uni / 4 - 1;
                } else {                /* Unicode to OEMCP */
                        p = uni2oem;
                        hi = sizeof uni2oem / 4 - 1;
                }
                li = 0;
                for (n = 16; n; n--) {
                        i = li + (hi - li) / 2;
                        if (chr == p[i * 2]) break;
                        if (chr > p[i * 2])
                                li = i;
                        else
                                hi = i;
                }
                c = n ? p[i * 2 + 1] : 0;
        }

        return c;
}

[/mw_shl_code]
这个好像就是你所说的二分法
Loto虚拟示波器 官方qq群: 706769836 https://shop296209296.taobao.com/shop/view_shop.htm?tracelog=t
回复 支持 反对

使用道具 举报

0

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
189
金钱
189
注册时间
2016-5-30
在线时间
15 小时
发表于 2018-10-24 16:23:20 | 显示全部楼层
本帖最后由 welcome_cool 于 2018-10-24 16:42 编辑

二分查找法的前提是你的数据要是有序的。
要是数据无序, 只能扫一次,O(n)的级别。
回复 支持 反对

使用道具 举报

1

主题

3

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2011-4-19
在线时间
1 小时
 楼主| 发表于 2018-10-25 20:33:13 | 显示全部楼层
谢谢楼上几位了。
二分法确实不适用这种情况。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-8 14:29

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表