二进制搜索不返回数组中的最后一个值

里兹万设拉子

我一直致力于在 C 中实现二进制搜索函数,它似乎适用于所有情况,除了在被搜索的数组中找到最后一个值。有没有人能指点我正确的方向。多谢!

我意识到这可能是一些糟糕且低效的代码,(我只有几天,原谅我!)所以我会考虑你的所有指导。

bool search(int value, int values[], int n)
{
int middle = (n / 2);
if (n < 0) 
{
    return false;
} 

if (n < 2 && n > 0) 
{
    if (value == values[0])
    {
        return true;
    }
    else
    {
        return false;
    }
} 

const int MAX = 65536;
int half[MAX];

if (value > values[middle])
{
    int new_size = n - middle - 1;
    for (int i = 0, m = middle + 1; i < new_size; i++, m++)
    {
        half[i] = values[m];
    }
    return search(value, half, new_size);
    }

else if (value < values[middle])
{
    int new_size = n - middle;
    for (int i = 0, m = 0; i < middle; i++, m++)
    {
       half[i] = values[m];
    }
    return search(value, half, new_size);
}

else if (value == values[middle])
{
    return true;
}
return false;
}

void sort(int values[], int n)
{
int swap;

for (int i = 0; i < n; i++)
{
    for (int j = 0; j < n; j++)
    {
        if (values[j] > values[j + 1])
        {
            swap = values[j + 1];
            values[j + 1] = values [j];
            values[j] = swap;
        }
    }
}
}
辛格

在您的排序函数中,索引越界错误可能会发生:将内部 for 循环更改为:

for(j =0; j < n-1; j++)  

我的解释是,在你的排序函数中,你试图实现冒泡排序算法,正确的实现是:

void sort(int a[], int n){
   int i,j,temp;
   for(i =0; i < n-1; i++){
     for(j =0; j < n-1-i; j++){
        if(a[j] > a[j+1]){
          temp = a[j];
          a[j] = a[j+1];
          a[j+1] = temp;
        }
     }
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

数组中的二进制搜索

二进制搜索不起作用。错误的“第一个”和“最后一个”

我的基本二进制搜索方法不适用于Java int数组中的一个特定值

一个热编码numpy中的二进制值

如何对二进制数组执行一个二进制操作?

二进制搜索字典列表中的第一个匹配项

在另一个二进制文件中查找二进制文件

查找二进制搜索树的所有非叶中存储的数据总和?(一个独立的递归函数,它返回一个整数。)

二进制搜索树算法,该算法返回范围内的值数组

二进制搜索程序返回不想要的值

如何创建一个二进制值来捕获R中的空值?

二进制文件处理程序未写入最后一个值

递归函数,用于查找单个数组中不返回二进制值的二进制文件。(不一样)

二进制搜索无法在数组列表中找到第一个值

二进制搜索以获取第一个整数的位置> =搜索的整数

Python二进制搜索readline不返回整行

SQL查询以获取最后一个二进制文件的左或右位置

二进制搜索以找到排序列表中小于特定值的最后一个元素

数组中的二进制搜索

使用Python解压缩二进制文件仅返回一个值

如何从8位带符号二进制数中得到一个负的十进制值?

对于二进制搜索的实现,两者中哪一个更好?

我想要一个递归函数使用二进制搜索来检查数组的顺序

如果找不到值,则C搜索中的二进制搜索树无法返回消息

如何在一个二进制文件中连接一百万个二进制文件?

在javascript中创建一个具有随机二进制值(0,1)的数组

如何比较上一个选择中的一个值并创建二进制 1 或 0 字段

从二进制搜索函数中返回值

给定一个二进制数组返回一个计数连续 1 的数量