快速排序--递归算法

来源:互联网 发布:好看的美剧 知乎 编辑:程序博客网 时间:2024/05/16 11:02

快速排序--递归算法

#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 0x7fffffffint 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 0x7fffffffint 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;}








原创粉丝点击