折半查找顺序表(递归与非递归)

来源:互联网 发布:股市热点软件 编辑:程序博客网 时间:2024/04/29 17:35


核心代码如下:

#include<stdio.h>#include<stdlib.h>typedef int Type;#define MAX 100typedef struct{Type *elem;int length;}S;int k;void creat(S &L){L.elem=(Type *)malloc(MAX*sizeof(Type));if(!L.elem)exit(0);printf("请输入表的长度\n");scanf("%d",&L.length);printf("请输入n个元素\n");for(int i=1;i<=L.length;i++)scanf("%d",&L.elem[i]);}void creat(S &L);//-------------非递归折半查找------------------- int search_zheban(S L){int low=1;int high=L.length;int mid;while(low<=high){mid=(low+high)/2;if(L.elem[mid]==k)return mid;else if(L.elem[mid]>k)high=mid-1;elselow=mid+1;}return 0;}//------------------递归折半查找------------------int search(S L,int low,int high){int mid;if(high<low)return 0;mid=(low+high)/2;if(L.elem[mid]==k)return mid;else if(L.elem[mid]>k)search(L,low,mid-1);elsesearch(L,mid+1,high);}int main(){S L;creat(L);//主函数读者自己玩吧return 0;}




1 0