//
// 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;
}
递归实现折半查找
最新推荐文章于 2023-12-22 16:58:24 发布