C编程实现了“半折搜索”的过程。

发布于 科技 2024-02-05
5个回答
  1. 匿名用户2024-01-25

    #include

    int main()

    int i, j, n, k=0, isfound=0;

    int num[15] = ;测试数组。

    printf("请输出一个整数:");

    scanf("%d", &n);

    i = (int)15/2;位移量。

    j = (int)15/2;以“指针”的数量为例。

    while(k<2)

    i = (int)i/2;

    if(i == 0) k++;i==0 表示当它对折不再折叠时,仍然有最后的比较,所以 k 用作计数。

    如果没有,则计算下一个循环指针的位置。

    if(nnum[j])

    j = j - i + 1);

    elseisfound = 1;

    break;如果找到相等的数字,则表示已找到标记并退出循环。

    输出结果。 if(isfound)

    printf("此数字是数组中 %d 元素的值", j);

    elseprintf("没有这样的数字! ");

    return 0;

  2. 匿名用户2024-01-24

    VC 运行。

    函数 10void f10()。

    int i,j,n=15,m=0;

    float a[15],k;

    printf("这个函数是:将 15 个数字按从小到大的顺序输入到一个数组中。 输入任意数字并使用半折搜索方法(在半折中查找)找到数组中的位置。 如果不是,则输出为“不在数组中”。");

    printf("请从小到大输入15位数字:");

    for(i=0;i<15;i++)

    scanf("%f",&a[i]);

    printf("请输入任意数字:");

    scanf("%f",&k);

    printf("输出为:");

    j=n/2;

    for(i=1;m==0;i++)

    if(ka[n-1])

    m=1; printf("该数字不在其数组中");}else if(j<0||j>(n-1))m=1; printf("该数字不在其数组中");}else if(k==a[j])

    m=1;printf("此数字是数组中的 %d 元素",j+1);}else if(ka[n/2])

    j++;system("pause...");

    对不起,我的错了。

  3. 匿名用户2024-01-23

    例如,排序后的数据为 1 5 12 35 64 78 89 123 456

    如果要求12,先用12与上半部分9个数字中间的12<64进行比较,这样你要找的数据就在前半部分,即1 5 12 35 64,然后用12和上半部分的中间数字(12)进行比较, 所以你可以在 2 次搜索后找到它。

    半折搜索的目的是提高搜索效率!

  4. 匿名用户2024-01-22

    假设有 n 个数字被跟踪升序(这是关键! 返回组)。把它放在一个一维数组之前,如何找到你想要的数字?

    顾名思义,二分法将一段数字分成两半。

    你想数进去它已经按升序排列了将案例与中位数进行比较时,有 4 种情况:

    为什么发现数字x小于中间数后设置left=mid+1和right=mid-1??它不能是 left=mid 和 right=mid?

    这涉及到如果有两个中位数(例如,图中第一个循环的中位数是 ),那么系统将自动选择它们的数字用作中间数字 (21)。

    然后,当需要检索时是最后的数字,最后只剩下两个边界,所以不管怎么错过橙子的中间数,左右边界的范围都不会改变,左边的边界仍然是左边的边界。 而你需要检索的数字是右边的边界,即使这个数字确实大于中间的数字,但是由于算法的原因,中间的数字永远不会是正确的边界,所以永远找不到右边边界上的数字。

    但是,如果设置为 left=mid+1 和 right=mid-1,则可以使左边框 = 右边框,中间数等于该数字,以便进行比较并找到它。

  5. 匿名用户2024-01-21

    算法思路:二进制搜索的搜索过程是首先确定搜索记录所在的范围(间隔),然后逐渐缩小范围,直到找到记录或找不到记录为止。

    步骤如下:比较x和a之间的中间元素a[mid],如果x=a[mid],则x在l中的位置为mid;

    如果 x,如果 x>a[mid],则 x 在 a[mid] 之后。

    无论您查找哪个部分,该方法都与在 A 中查找 X 相同,但搜索的大小减小了。 这说明,这个问题满足了实行分而治之的第三个条件。

相关回答
14个回答2024-02-05

在 C 中,可以通过定义累加器(变量)并将其与 for 循环组合来计算 1 到 100 的总和。 >>>More

5个回答2024-02-05

<>2.接下来,定义一个大数字。

3.然后将数字转换为字符串并用逗号分隔。 >>>More

12个回答2024-02-05

如下:

类型 1:仅结构定义: >>>More

12个回答2024-02-05

VS,C++格式。

#include >>>More

8个回答2024-02-05

九十九乘法表有 9 行 9 列,重点是 for 循环。 >>>More