8_75.cpp
上传用户:zipjojo
上传日期:2009-07-20
资源大小:70k
文件大小:1k
源码类别:

文章/文档

开发平台:

C/C++

  1. #include<iostream.h>
  2. const int max=100;
  3. template <class T>
  4. class Search
  5. {
  6. T A[max];
  7. int n;
  8. public:
  9. Search(){}
  10. Search(T a[],int i);
  11. int seek(T b[],int l,int h,T x);
  12. int seek1(T b[],T x,int m);
  13. void disp()
  14. {
  15. for (int i=0;i<n;i++)
  16. cout<<A[i]<<"  ";
  17. cout<<endl;
  18. }
  19. };
  20. template <class T>
  21. Search<T>::Search(T a[],int i)
  22. {
  23. n=i;
  24. for(int j=0;j<i;j++)
  25. A[j]=a[j];
  26. }
  27. template <class T>
  28. int Search<T>::seek(T b[],int l,int h,T x)
  29. {
  30. int m;
  31. if(l>h)
  32. {
  33. cout<<endl<<"The data you are searching for does NOT exist!"<<endl;
  34. return -1;
  35. }
  36. else
  37. {
  38. m=(l+h)/2;
  39. if(x<b[m])
  40. return (seek(b,l,m-1,x));
  41. else if(x==b[m])
  42. return m;
  43. else
  44. return (seek(b,m+1,h,x));
  45. }
  46. }
  47. template <class T>
  48. int Search<T>::seek1(T b[],T x,int m)
  49. {
  50. int i=0;
  51. while(i<m && b[i]!=x) i++;
  52. if(i>=m)
  53. return -1;
  54. else
  55. return i;
  56. }
  57. void main()
  58. {
  59. char a[]="acegkmpwxz",d;
  60. Search<char> s(a,10);
  61. cout<<"The original serial:";
  62. s.disp();
  63. cout<<"Input the element you want to search:";
  64. cin>>d;
  65. cout<<"The position of the element of'"<<d<< "'is:";
  66. cout<<s.seek(a,0,9,d)+1<<endl;
  67. int c[]={2,9,10,99,55,66,3,88,5,100},e;
  68. Search<int> ss(c,10);
  69.     cout<<"The original serial:";
  70. ss.disp();
  71.     cout<<"Input the element you want to search:";
  72. cin>>e;
  73. cout<<"The position of the element of'"<<e<<"' is:";
  74. // cout<<ss.seek(c,0,9,e)+1<<endl;  //二分查找法要求序列有序
  75. cout<<ss.seek1(c,e,10)+1<<endl;
  76. }