鱼C论坛

 找回密码
 立即注册
查看: 1715|回复: 1

[已解决]还有这个

[复制链接]
发表于 2023-11-21 13:48:40 | 显示全部楼层 |阅读模式
10鱼币
二分查找法。按照从小到大的顺序,输入n个整数并存入数组a中,然后在数组a中查找给定的x。如果数组a中的元素与x的值相同,输出相应的下标(下标从0开始);如果没有找到,输出“Not Found”。如果输入的n个整数没有按照从小到大的顺序排列,或者出现了相同的数,则输出“Invalid Value”。


#include <stdio.h>

# define MAXN 10

int main()

{

  int found, i, left, mid, n, right, sorted, x;

  int a[MAXN];



  scanf("%d %d", &n, &x);

  for(i = 0; i < n; i++){

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

  }

   

  sorted = 1;

  for(i = 1; i < n; i++){

    if【1】{

               【2】

      break;

    }

  }

  if(sorted == 0){

    printf("Invalid Value\n");

  }else{

    found = 0;

     【3】

    while(left <= right){

                       【4】

      if (x == a[mid]){

                 【5】

        break;

      }else if (x < a[mid]){

                  【6】

      }else{

                 【7】

      }

    }

    if(found != 0){

      printf("%d\n",mid);

    }

    else{

      printf( "Not Found\n");

    }

  }  

   

  return 0;

}
也讲一下,谢谢
最佳答案
2023-11-21 13:48:41
  1. #include <stdio.h>

  2. # define MAXN 10

  3. int main()
  4. {
  5.     int found, i, left, mid, n, right, sorted, x;
  6.     int a[MAXN];

  7.     scanf("%d %d", &n, &x);
  8.     for(i = 0; i < n; i++){
  9.         scanf("%d", &a[ i]);
  10.     }

  11.     sorted = 1;
  12.     for(i = 1; i < n; i++){
  13.         if(a[ i] < a[i-1]){
  14.             sorted = 0;
  15.             break;
  16.         }
  17.     }

  18.     if(sorted == 0){
  19.         printf("Invalid Value\n");
  20.     }else{
  21.         found = 0;
  22.         left = 0;
  23.         right = n - 1;
  24.         while(left <= right){
  25.             mid = (left + right) / 2;
  26.             if (x == a[mid]){
  27.                 found = 1;
  28.                 break;
  29.             }else if (x < a[mid]){
  30.                 right = mid - 1;
  31.             }else{
  32.                 left = mid + 1;
  33.             }
  34.         }
  35.         if(found != 0){
  36.             printf("%d\n",mid);
  37.         }
  38.         else{
  39.             printf( "Not Found\n");
  40.         }
  41.     }   
  42.     return 0;
  43. }
复制代码


这是一个使用二分查找法在有序数组中查找指定元素的程序。首先,它会检查输入的n个整数是否按照从小到大的顺序排列,如果没有则输出"Invalid Value"。如果数组是有序的,则使用二分查找法在数组中查找给定的x。如果找到了,就输出相应的下标;如果没有找到,就输出"Not Found"。

最佳答案

查看完整内容

这是一个使用二分查找法在有序数组中查找指定元素的程序。首先,它会检查输入的n个整数是否按照从小到大的顺序排列,如果没有则输出"Invalid Value"。如果数组是有序的,则使用二分查找法在数组中查找给定的x。如果找到了,就输出相应的下标;如果没有找到,就输出"Not Found"。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-11-21 13:48:41 | 显示全部楼层    本楼为最佳答案   
  1. #include <stdio.h>

  2. # define MAXN 10

  3. int main()
  4. {
  5.     int found, i, left, mid, n, right, sorted, x;
  6.     int a[MAXN];

  7.     scanf("%d %d", &n, &x);
  8.     for(i = 0; i < n; i++){
  9.         scanf("%d", &a[ i]);
  10.     }

  11.     sorted = 1;
  12.     for(i = 1; i < n; i++){
  13.         if(a[ i] < a[i-1]){
  14.             sorted = 0;
  15.             break;
  16.         }
  17.     }

  18.     if(sorted == 0){
  19.         printf("Invalid Value\n");
  20.     }else{
  21.         found = 0;
  22.         left = 0;
  23.         right = n - 1;
  24.         while(left <= right){
  25.             mid = (left + right) / 2;
  26.             if (x == a[mid]){
  27.                 found = 1;
  28.                 break;
  29.             }else if (x < a[mid]){
  30.                 right = mid - 1;
  31.             }else{
  32.                 left = mid + 1;
  33.             }
  34.         }
  35.         if(found != 0){
  36.             printf("%d\n",mid);
  37.         }
  38.         else{
  39.             printf( "Not Found\n");
  40.         }
  41.     }   
  42.     return 0;
  43. }
复制代码


这是一个使用二分查找法在有序数组中查找指定元素的程序。首先,它会检查输入的n个整数是否按照从小到大的顺序排列,如果没有则输出"Invalid Value"。如果数组是有序的,则使用二分查找法在数组中查找给定的x。如果找到了,就输出相应的下标;如果没有找到,就输出"Not Found"。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-22 01:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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