#include<iostream> using namespace std; int find(int,int [],int); int find1(int,int [],int); bool add(int a[],int n); int main() { int a[]={22,44,66,88,1,32,64}; if(add(a,7)==1) { cout<<"采用二分算法得到的位置为"<<find1(44,a,7)+1<<endl; } else cout<<"采用递增算法得到的位置为"<<find(44,a,7)+1<<endl; } int find(int m,int a[],int n)//递增法 { for(int i=0;i<n;i++) { if(a[i]==m) return i; } return n; } int find1(int m,int a[],int n)//二分法 { int o=0,h=n-1,i; while(o<=h) { i=(o+h)/2; if(a[i]==m) { return i; } if(a[i]<m) { o=i+1; } else h=i-1; } return n; } bool add(int a[],int n) { for(int i=1;i<n;i++) { if(a[i]<a[i-1]) return false; } return true; }
时间: 2024-09-29 13:33:49