实验

#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;
}
View Code

 

posted @ 2018-12-10 14:22  bluefly-hrbust  阅读(94)  评论(0编辑  收藏  举报