实验
#include<stdio.h> #include<malloc.h> #include<algorithm> #include<iostream> using namespace std; struct node{ int *elem; int length; }; node a; int f,p; void order_find(int x){ int flag=0; int pos=-1; for (int i=0;i<a.length;i++){ if(a.elem[i]==x){ flag=1; pos=i+1; break; } } if (flag){ printf("存在这个数,第一个的位置在%d\n",pos); }else{ printf("不存在这个数"); } } void erfen_find(int l,int r,int data){ int mid=(l+r)/2; if(a.elem[mid]==data){ f=1; return; } if(l==r){ if(a.elem[mid]==data)f=1; return; } if(a.elem[mid]<data){ erfen_find(mid+1,r,data); }else { erfen_find(l,mid,data); } } int main(){ int n,num; f=0; while(~scanf("%d",&n)){ f=0; a.elem=(int*)malloc(100*sizeof(int)); for (int i=0;i<n;i++){ scanf("%d",&a.elem[i]); } a.length=n; printf("请输入要查找的数字"); scanf("%d",&num); printf("按照顺序查找:"); order_find(num); sort(a.elem,a.elem+a.length); erfen_find(0,a.length-1,num); printf("按照二分查找:"); if (f){ printf("查找到这个数\n"); }else { printf("不存在这个数\n"); } } return 0; }
有不懂欢迎咨询
QQ:1326487164(添加时记得备注)