查找数组元素

末蓝、 2023-07-24 13:28 108阅读 0赞

本小节需要你用递归函数实现二分法查找数组元素。

编程要求

用递归函数实现二分法查找数组元素。

提示:先输入一个升序数组,再输入一个数,输出该数在数组中的下标;
不在数组中输出-1.

效果如下:

输入:

  1. 9 10 23 25 26 27 28 30 31 35
  2. 26

输出:

  1. 4
  2. #include<iostream>
  3. using namespace std;
  4. int main()
  5. {
  6. int a[10];
  7. int n,k;
  8. bool j;
  9. j=0;
  10. for(int i=0;i<10;i++)
  11. {
  12. cin>>a[i];
  13. }
  14. cin>>n;
  15. for(k=0;k<10;k++)
  16. {
  17. if(a[k]==n)
  18. {
  19. j=1;
  20. break;
  21. }
  22. }
  23. if(j==0)
  24. {
  25. cout<<-1<<endl;
  26. }
  27. else if(j==1)
  28. {
  29. cout<<k<<endl;
  30. }
  31. }

  1. #include<iostream>
  2. using namespace std;
  3. #define N 10
  4. int search(int [],int,int,int);
  5. int main()
  6. {
  7. int key;
  8. int b[N];
  9. for(int i = 0;i<N;i++)
  10. {
  11. cin>>b[i];
  12. }
  13. int c=0;
  14. int d=sizeof(b)/sizeof(int)-1;
  15. int result;
  16. cin>>key;
  17. result=search(b,c,d,key);
  18. cout<< result<<endl;
  19. return 0;
  20. }
  21. int search(int a[],int left,int right,int key)
  22. {
  23. if(left>right)
  24. {
  25. return -1;
  26. }
  27. else
  28. {
  29. int middle=(left+right)/2;
  30. if (a[middle]==key)
  31. {
  32. return middle;
  33. }
  34. else if(key<a[middle])
  35. {
  36. right=middle-1;
  37. return search(a,left,right,key);
  38. }
  39. else
  40. {
  41. left=middle+1;
  42. return search(a,left,right,key);
  43. }
  44. }
  45. }

发表评论

表情:
评论列表 (有 0 条评论,108人围观)

还没有评论,来说两句吧...

相关阅读

    相关 查找数组元素

    本小节需要你用递归函数实现二分法查找数组元素。 编程要求 用递归函数实现二分法查找数组元素。 提示:先输入一个升序数组,再输入一个数,输出该数在数组中的下标; 不

    相关 查找数组元素

    题目: 编写程序,输入n(1<=n<=10),输入n个整数构成一个数组,输入整数x,在这个数组中查找x是否存在,如果存在,删除x,后面元素依次向前添补空位,并输出删除元素后的