快速排序--递归算法
#include<iostream>
#include<string>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<iomanip>
#include<queue>
#include<cstring>
#include<map>
using namespace std;
typedef long long ll;
#define pi 3.14159265358979
#define inf 0x7fffffff
int a[100005];
void qsort(int l,int r)
{
int i,j,p,mid;
i=l;j=r;
mid=a[(l+r)/2];
do
{
while(a[i]<mid) i++;
while(a[j]>mid) j--;
if(i<=j)
{
p=a[i];a[i]=a[j];a[j]=p;
i++;j--;
}
}while(i<=j);
if(l<j) qsort(l,j);
if(i<r) qsort(i,r);
}
int main()
{
int i,n;
while(scanf("%d",&n)!=EOF)
{
for(i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
qsort(1,n);
for(i=1;i<=n;i++)
printf("%d ",a[i]);
}
return 0;
}
二分查找
#include<iostream>
#include<string>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<iomanip>
#include<queue>
#include<cstring>
#include<map>
using namespace std;
typedef long long ll;
#define pi 3.14159265358979
#define inf 0x7fffffff
int a[100005],m;
void jc(int l,int r)
{
int mid=(l+r)/2;
if(a[mid]==m) cout<<"The number in "<<mid<<endl;
if(l>r) {printf("NO found!\n");return;}
if(a[mid]<m) jc(mid+1,r);
if(a[mid]>m) jc(l,mid-1);
}
int main()
{
int i,n;
while(scanf("%d",&n)!=EOF)
{
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
cin>>m;
jc(1,n);
}
return 0;
}