• C语言拯救计划Day4-1之查找整数


    本题要求从输入的N个整数中查找给定的X。如果找到,输出X的位置(从0开始数);如果没有找到,输出“Not Found”。

    输入格式:

    输入在第一行中给出两个正整数N(≤20)和X,第二行给出N个整数。数字均不超过长整型,其间以空格分隔。

    输出格式:

    在一行中输出X的位置,或者“Not Found”。

    输入样例1:

    5 7
    3 5 7 1 9
    
     

    输出样例1:

    2
    
     

    输入样例2:

    5 7
    3 5 8 1 9
    
     

    输出样例2:

    Not Found






     1    #include<stdio.h>
     2    #include<stdlib.h>
     3    int main()
     4    {
     5         //输出预处理
     6         int i,b=0,c=0,N,X;
     7         scanf("%d %d
    ",&N,&X);
     8         int a[N];
     9         c=N;
    10         for(i=0;i<c;i++)
    11         {
    12            scanf("%d",&a[i]);
    13         }
    14          //遍历数组,判断a[i]是否与x相等,如果相等就标记为1,且输出a[i]所在的位置下标,退出遍历循环
    15           for(i=0;i<c;i++)
    16         {   if(a[i]==X)
    17            {
    18             b=1;
    19             printf("%d",i);
    20             break;
    21            }    
    22           
    23         }
    24            //判断标记是否为0,若为0则说明没有退出循环,没有找到与x相等的a[i],输出不存在
    25            if(b==0)
    26            {
    27                 printf("Not Found");
    28            }
    29    
    30 
    31           return 0;
    32    }  

    还有一种二分查找的做法,但是有问题,也不知道到底哪里出错了。。。 

     2 #include <stdlib.h>
      #include <stdio.h> 3 int Binary_Search(int *a,int n,int key) 4 { 5 int low,high,mid; 6 low=1; /*定义最底下标为记录首位*/ 7 high=n; /*定义最高下标为记录末位*/ 8 while(low<=high) 9 { 10 mid=(low+high)/2; /*折半*/ 11 if(key<a[mid]) 12 high=mid-1; 13 if(key>a[mid]) 14 low=mid+1; 15 else 16 return mid-1; 17 } 18 return 0; 19 } 20 int cmp(const void *a,const void *b){ 21 return *(int*)a-*(int *)b; 22 } 23 int main() 24 { 25 int n; 26 int x;
        int ans=-1;
    27 scanf("%d %d",&n,&x); 28 int a[20]={0}; 29 int i; 30 for (i=0;i<n;i++){ 31 scanf("%d",&a[i]); 32 } 33 for (i=0;i<n;i++){ 34 qsort(a,n,sizeof(int),cmp); 35 ans = Binary_Search(a,n,x); 36 } 37 if (ans==0) printf("Not Found"); 38 else printf("%d",ans); 39 40 41 return 0; 42 }
  • 相关阅读:
    向内的寻找
    了解潜意识
    NOI2014 Day1
    NOI2011 Day1
    NOI2012 Day2
    NOI2012 Day1
    NOI2013 Day2
    NOI2013 Day1
    拉格朗日乘数法
    NOI2015 Day2
  • 原文地址:https://www.cnblogs.com/noobchen/p/12786747.html
Copyright © 2020-2023  润新知