折半查找的递归实现与qsort
来源:互联网 发布:xinnet域名管理 编辑:程序博客网 时间:2024/06/05 01:19
#include<stdio.h>#include<stdlib.h>int cmp(const void *a,const void *b){ return *(int *)a-*(int *)b;}int Search(int *a,int low,int high,int key){ int mid=(low+high)/2; if(low<=high) { if(a[mid]==key) return mid; if(a[mid]<key) return Search(a,low,mid-1,key); return Search(a,mid+1,high,key); }}int main(){ int *a; int n,i,key; printf("请输入表元素个数\n"); scanf("%d",&n); a=(int *)malloc(n*sizeof(int)); for(i=0;i<n;i++) { scanf("%d",&a[i]); } qsort(a,n,sizeof(a[0]),cmp); printf("从小到大排序如下:\n"); for(i=0;i<n;i++) { printf("%d ",a[i]); } puts(""); printf("输入您要查找的元素:\n"); scanf("%d",&key); printf("您要查找的元素在第%d个位置:\n",Search(a,0,n-1,key)+1); system("pause"); return 0;}