算法之二分查找(c语言版实现+测试)

递归算法(deep是为了测试,实际生产不需要):
核心算法:

//递归算法
int rank(Type key,Type a[],int lo,int hi,int deep)
{
    if(lo > hi) return -1;
    int mid = lo + (hi - lo) / 2;
    printf("deep: %d lo: %d hi: %d\n",deep,lo,hi);
    if (key > a[mid])
    {
        ++deep;
        return rank(key,a,mid + 1,hi,deep);
    }
    else if (key < a[mid])
    {
        ++deep;
        return rank(key,a,lo,mid - 1,deep);
    }
    else
        return mid;
}
int BinarySearch(Type key,Type a[],int length)
{
    int deep = 0;
    return rank(key,a,0,length,deep);
}

辅助排序函数(快速排序):

void QuickSort(Type a[],int left,int right)
{
    Type temp;
    if(left < right)
    {
        int i = left;
        int j = right;
        temp = a[left];
        do
       {
          
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值