递归实现折半查找

来源:互联网 发布:网络药品经营管理办法 编辑:程序博客网 时间:2024/05/31 19:57
////  main.c//  递归实现折半查找////  Created by 邱阳 on 16/3/28.//  Copyright © 2016年 中路杀神. All rights reserved.//#include <stdio.h>#define SWAP(a,b) (temp=a,a=b,b=temp)int temp;int split(int a[],int low,int high){    int k,i=low;    int x=a[low];    for(k=low+1;k<=high;k++)    {        if(a[k]<=x)        {            i=i+1;            if(i!=k)                SWAP(a[i],a[k]);        }    }    SWAP(a[low],a[i]);    return i;}void quick_sort(int a[],int low,int high){    int k;    if(low<high)    {        k=split(a,low,high);        quick_sort(a,low,k-1);        quick_sort(a,k+1,high);    }}int mid_seek(int a[],int low,int high,int x){    int k;    if(high>low)    {        k=(high+low)/2;        if(a[k]==x)return k+1;        else if(a[k]>x) return mid_seek(a,low,k-1,x);             else return mid_seek(a,k+1,high,x);    }    return 0;}int main(int argc, const char * argv[]) {    int a[5]={1,2,3,4,5};    int x;    //quick_sort(a,0,4);    printf("输入需要查找的数:");    scanf("%d",&x);    mid_seek(a,0,4,x)?printf("%d在数组第%d个位置上\n",x,mid_seek(a,0,4,x)):printf("%d不再数组中\n",x);    return 0;}

0 0
原创粉丝点击