二分 + 快排

来源:互联网 发布:商场消费数据 编辑:程序博客网 时间:2024/03/29 03:49
#include <cstdio>void binarySearch(int a[],int x,int l,int r){    int flag = 0;    while(l<=r)    {        int mid = (l+r)/2;        if(x<a[mid])        {           r=mid-1;        }        else if(x>a[mid])        {           l=mid+1;        }        else        {            printf("postion of x在%d\n",mid);            flag= 1;            break;        }    }    if(flag==0)        printf("x is not exist\n");}int part(int a[],int l,int r){    int temp = a[l];    while(l<r)    {        while(l<r && a[r]>temp)            r--;        if(l<r)        {            a[l]=a[r];            l++;        }        while(l<r && a[l]<temp)        {            l++;        }        if(l<r)        {            a[r]=a[l];            r--;        }    }    a[l] = temp;    return l;}void quickSort(int a[],int l,int r){    if(l<r)    {        int q = part(a,l,r);        quickSort(a,l,q-1);        quickSort(a,q+1,r);    }}int main(){    int a[15]= {1,2,3,4,2,10,3,6,8,9};    for(int i=0;i<10;i++)        printf("%d ",a[i]);        printf("\n");    quickSort(a,0,9);    for(int i=0;i<9;i++)        printf("%d ",a[i]);    printf("\n");    binarySearch(a,6,0,9);    for(int i=0;i<11;i++)        printf("%d ",a[i]);    return 0;}

0 0
原创粉丝点击